对于任意一个url,如:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1
sqlmap会:
- 判断可注入的参数
- 判断可以用那种SQL注入技术来注入
- 识别出哪种数据库
- 根据用户选择,读取哪些数据
sqlmap支持的注入模式
- 基于布尔的盲注,根据返回页面判断条件真假的注入。
- 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
- 基于报错的注入,即页面会返回错误信息,或者把注入的语句和结果直接返回在页面中。
- 联合查询注入,可以使用union的情况下的注入。
- 堆查询注入,可以同时执行多条语句的执行时注入。
Sqlmap支持的数据库有:
MySQL,Oracle,PostgreSQL,MSSQL,SQLite, Access
-
可以提供一个简单的URL,Burp或WebScarab请求日志文件,文本文档中的完整http请求或者Google的搜索,匹配出结果页面,也可以自己定义一个正则来判断那个地址去测试。
测试GET参数,POST参数,HTTP Cookie参数,HTTP User-Agent头和HTTP Referer头来确认是否有SQL注入,它也可以指定用逗号分隔的列表的具体参数来测试。
可以设定HTTP(S)请求的并发数,来提高盲注时的效率。
常用参数
-v (VERBOSE)
对一个点进行尝试判断以及读取数据。
共有七个等级,默认为1:
0:只显示python错误以及严重的信息。
1:同时显示基本信息和警告信息(默认)
2:同时显示debug信息。
3:同时显示注入的payload(最好看payload测试等级)
4:同时显示HTTP请求。
5:同时显示HTTP响应头。
6:同时显示HTTP响应页面。
-d (director)
直接连接数据库。
-u (URL)
从Burp或者WebScarab代理中获取日志。
格式:sqlmap -u "http://www.baidu.com"
-l (LIST)
直接把Burp或Webscabe中解析目标,并将目标直接导出到Sqlmap来检测是否存在注入。从文本中获取多个目标扫描。
-level (执行测试等级)
-g
测试Google搜索结果中的GET参数(Top100结果)
--data
用于拆分字符,此参数用于POST方式提交,sqlmap会像检测GET参数一样检测POST的参数。
--cookie,--load-cookies,--drop-set-cookie
主要用在这两方面:
1.web应用需要登陆的时候。
2.你想要在这些头参数中测试SQL注入。
-p
sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。但是你可以手动用-p参数设置想要测试的参数。例如: -p "id,user-anget"
当你使用--level的值很大但是有个别参数不想测试的时候可以使用--skip参数。
--os
默认情况下sqlmap会自动的探测数据库服务器系统,支持的系统有:Linux、Windows。
指定无效的大数字
--dbs
当前用户有权限读取所有数据看列表信息的表中的时候,即可列出一个特定数据的所有表。
--dump,-C,-T,-D,--start
如果当前管理员有权限读取数据库其中的一个表,那么就能获取整个表中的所有内容。
-T,-D参数指定想要获取哪个库的哪个表,不适用-D参数是,默认使用当前库。
--common-tables
暴力破解表名,当--tables无法获取到数据库表时,使用该参数破解,同理用于破解列名。
当:
1、MySQL数据库版本小于5.0,没有information_schema表。
2、数据库是Microssoft Access,系统表MSysObjects是不可读的(默认)。
3、当前用户没有权限读取系统中保存数据结构的表的权限。
--file-read
从服务器中读取文件。当数据库为MySQL,PostgreSQL, MSSQL时,并当前用户有权使用特定的函数(以下情况均在该条件下),读取文件可以是文本也可以是二进制文件。
--file-write,--file-dest
把文件上传到数据库服务器中。
--os-cmd,--os-shell
运行任意操作系统命令。包含用户自定义函数sys_exec()和sys_eval()等。
如有错误,请私信我修改,谢谢。