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”