美文网首页
二十四、SQLMap自动注入-(5)Injection类

二十四、SQLMap自动注入-(5)Injection类

作者: cybeyond | 来源:发表于2017-12-01 14:05 被阅读0次
                                  目录
  1. 选项 -p
  2. 选项--skip
  3. URI注入点
  4. 选项--dbms
  5. 选项--os
  6. 选项--invalid-bignum/--invalid-logical
  7. 选项--no-cast
  8. 选项 --no-escape
  9. 选项--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/目录下找到相应脚本,按顺序执行

相关文章

网友评论

      本文标题:二十四、SQLMap自动注入-(5)Injection类

      本文链接:https://www.haomeiwen.com/subject/nhwbbxtx.html