sqlmap自动化注入工具使用浅析

Sqlmap简介:
Sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。

支持的数据库:MySQL,Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。

Sqlmap支持五种常用的注入方式:
1.联合查询注入
2.报错注入
3.布尔盲注
4.时间盲注
5.多语句查询注入

需要注意的是,sqlmap是用python2书写的,所以运行程序时,请使用python2进行运行

使用方法:
1.设置目标URL
-u/--url
python sqlmap.py -u “ http://www.target.com/index.php?id=1

-m
从文本中获取多个目标扫描,要求每行一个URL
sqlmap -m “urllist.txt”

-r
从文件中加载 HTTP 请求,这样的话 就不需要在去设定 Cookie,POST 数据 ...... 等等
sqlmap –r “/tmp/1.txt”

2.设置回显等级:
参数:-V 默认为1:  注意这里是大V
0、只显示python错误以及严重的信息。 
1、同时显示基本信息和警告信息。(默认等级)
2、同时显示debug信息。 
3、同时显示注入的payload。 
4、同时显示HTTP请求。 
5、同时显示HTTP响应头。 
6、同时显示HTTP响应页面。

3.设置HTTP数据包相关参数
参数:--data
此参数是把数以POST方式提交,sqlmap会像检测GET参数一样检测POST过去的参数。 
python sqlmap.py -u " http://www.target.com/vuln.php" --data="id=1”   (POST过去一个id=1的参数)

--cookie
当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到--cookie参数中

--user-agent
默认情况下sqlmap的HTTP请求头中的User-Agent值是: 
sqlmap/1.0-devxxxxxxxxx( http://sqlmap.org)这个时候可以手动指定伪造一个User-Agent。
sqlmap -u “ http://www.target.com” --level 3 --user-agent=”aaaaaa” --dbs

--random-agent
会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。

--referer
sqlmap可以在请求中伪造HTTP中的referer。
sqlmap -u “ http://www.target.com” --leve 3 --referer=” www.baidu.com” –dbs

--delay
可以设定两个http请求间的延迟,设定为1的时候是1秒,默认是没有延迟的。

--timeout
可以设定一个http请求超过对久判定为超时,默认是30秒。

4.指定测试参数
参数:-p
sqlmap 默认会测试所有的GET和POST参数
当--level的值大于等于2的时候也会测 试HTTP Cookie头的值。
当大于等于3的时候也会测试User- Agent和HTTP Referer 头的值。 
例如:-p “id,user-angent”(指定要测试的参数)

--skip
但是使用--level的值很大但是有个别参数不行测试的时候可以使用--skip参数 
例如:--skip=”user-agent,referer”

5. 设定探测等级
--level
共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到, 自己也可以根据相应的格式添加自己的payload。 
level>=2的时候就会测试HTTP Cookie。 
level>=3的时候就会测试HTTP User-Agent/Referer头。
level=5 的时候会测试HTTP Host。

6. 设定探测风险等级
共有四个风险等级,默认是1会测试大部分的测试语句,
2会增加基于时间的测试语句, 
3会增加OR语句的SQL注入测试。在有些时候,例如在UPDATE的语句中,注入一个 OR的测试语句,可能导致更新的整个表,可能造成很大的风险。

7. 列数据
--dbs
--current-db
--tables -D database_name
--columns -T table_name -D database_name
--dump -C column_1,column_2 -T table_name -D database_name

8. 一些常用的参数
--users 列数据库管理用户,当前用户有权限读取包含所有用户的表的权限时,就可以列 出所有管理用户。 
--current-user 在大多数据库中可以获取到管理数据的用户。
 --is-dba 判断当前的用户是否为管理,是的话会返回True。 
--privileges 当前用户有权限读取包含所有用户的表的权限时,很可能列举出每个用户 的权限,sqlmap将会告诉你哪个是数据库的超级管理员。也可以用-U参数指定你想看 那个用户的权限。 
--proxy 指定一个代理服务器 eg: –proxy http://local:8080 
--prefix=PREFIX 注入payload字符串前缀 
--suffix=SUFFIX 注入payload字符串后缀 
例子:
sqlmap -u “ www.target.com/index.php?id=1” -p id --prefix “')”--suffix “AND ('1'='1”

9. 使用shell命令
前提:需要网站的物理路径,其次是需要有FIFE权限。 
sqlmap -r “C:\sqlmap\request.txt” -p id --dms mysql --os-shell 

接下来指定网站可写目录:
“C:\www”


猜你喜欢

转载自blog.csdn.net/sdb5858874/article/details/80656155