一、SQLMap介绍
- sqlmap是一个有python语言编写的开源渗透测试工具,它主要用来检测sql注入漏洞,是一款功能强大的失去了漏洞检测利用工具。
- 它可以检测的数据库有:access、mssql、MySQL、Oracle、postgresql、db2、sqlite等。
- 可以进行sql盲注、union查询、显错注入、延迟注入、post注入、cookie注入等。
- 其他功能:
执行命令、列举用户、检测权限、自动破解、数据导出等功能。
二、基本参数
- sqlmap.py -h 查看帮助选项
- is-dba 当前用户权限
- dbs 所有数据库
- current-db 网站当前数据库
- users 所有数据库用户
- current-user 当前数据库用户
- tables 参数:列表名
- columns 参数:列字段
- dump 参数:下载数据
- –dump 获取表中的数据,包括列
- –dump-all 转存DBMS数据库所有表项目
- –level 测试等级(1-5),默认为1
- 读取数据库—>读取表—>读取表中的列—>获取内容
- -D 指定数据库
- -T 指定表
- -C 指定列
- –dbms=mysql Oracle mssql 指定数据库
- –users 枚举所有用户
- –passwords 枚举所有用户密码
- –roles 列出数据库管理员角色
- –priviles 列出数据库管理员权限
- 列举数据库的架构
- sqlmap.py “http://xx.com/int.php?id=1” --schema --batch --exclude-sysdbs
三、探测等级
- 参数: --level
- 共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,也可以根据相应的格式添加自己的payload。
- 这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试
- 在不确定那个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。payload(注入语句)
四、显示调试信息
- -v 显示调试信息有7个级别
- 0、只显示python错误以及严重的信息
- 1、同时显示基本信息和警告信息(默认)
- 2、同时显示debug信息
- 3、同时显示注入的payload
- 4、同时显示HTTP请求
- 5、同时显示HTTP响应头
- 6、同时显示HTTP相应页面
五、风险等级
- 参数:–risk
- 共有四个风险等级,默认是1会测试大部分的测试语句,2会增加基于时间的测试语句,3会增加OR语句的SQL注入测试
- 在有些时候,例如在UPDATE的语句中,注入一个OR的测测试语句,可能导致更新的中整个表,可能会造成很大的风险
- 测试的语句同样可以在xml/payloads.xml中找到,也可以自行添加payload
六、获取目标
-
参数:-u或者–url
-
格式:http(s)?/tageturl[:port]
-
例如:python sqlmap.py -u http://www.target.com/vuln.php?id=1
-
从文本中获取多个目标
-
参数:-m
-
文件中保存url格式如下,sqlmap会一个一个检测
-
www.target1.com/vuln1.php?q=foobar
-
www.target2.com/vuln2.asp?id=1
-
www.target3.com/vuln3/id/1*
七、获取http请求注入
- 参数:-r
- sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据等等)
- 比如文本文件内容如下:
- POST/vuln.php HTTP/1.1
- Host:www.target.com
- User-Agent:Mozilla/4.0
- id=1
八、处理Google搜索结果
- 参数:-g
- sqlmap可以测试注入Google的搜索结果中的GET参数(只获取前100个搜索结果)
- 例子:
- python sqlmap.py -g “inurl:”.php?id=1""
九、检测POST注入
- –data
- 此参数是把数据以POST方式提交,sqlmap会像检测GET参数一样检测POST的参数
- 例子:
- python sqlmap.py -u “http://www.cracer.com/cracer.php” --data=“id=1”
十、–param-del
- 参数拆分字符
- 当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数
- 例子:
- python sqlmap.py -u “http://www.cracer.com/vuln.php” --data=“query=footbar;id=1” --param-del=";"
十一、–cookie
- 适用于cookie注入
- 将参数加入到cookie注入测试
- sqlmap -u “http://www.ntjx.org/jsj/DownloadShow.asp” --cookie “id=9” --table --level 2
十二、–referer,–headers,–proxy
-
–referer
-
sqlmap可以在请求中伪造HTTP中的referer,当–level参数设定为3或者3以上的时候会尝试对referer注入
扫描二维码关注公众号,回复: 10607888 查看本文章 -
–header
-
可以通过–headers参数来增加额外的http头
-
–headers “client-ip:1.1.1.1”
-
–proxy
-
使用–proxy代理格式:http://url:port