美文网首页
sqlmap INJECTION

sqlmap INJECTION

作者: Instu | 来源:发表于2017-05-24 15:14 被阅读0次

参数:-p,--skip

sqlmap默认测试GET和POST参数;

当level>=2时,会测试HTTP Cookie头的值;当level>=3时,会测试User-Agent和HTTP Referer头的值。

使用-p参数可以设置要测试的参数。例如: -p "id,user-anget"

当使用的level值很大但是有个别参数不想测试的时候可以使用--skip参数。

例如:--skip="user-angent,referer"


有些web服务器使用了URL重写(伪静态),导致无法直接使用sqlmap测试参数,可以在想测试的参数后面加*,例如:

sqlmap -u "http://targeturl/param1/value1*/param2/value2/"


--dbms 指定数据库

如果认为目标网站存在注入点,但是sqlmap没检测出来,可以设置--dbms参数

--os 指定操作系统(windows、linux)


--invalid-bignum 指定无效的大数字

默认情况下id=13,sqlmap会变成id=-13来报错,当你想指定一个报错的大数值时,可以使用这个参数。

--invalid-logical 指定无效的逻辑

也可以指定把默认的id=-13的报错改成id=13 AND 18=19报错。


--no-cast

默认情况下,sqlmap榨取数据时,会将所有结果转换为字符串,并用空格替换NULL;

有些老版本mysql数据库可能不支持用空格替换NULL的处理机制,所以需要用到此参数。


--no-escape

出于混淆和避免出错的目的,默认情况下,当payload中用单引号界定字符串时,sqlmap使用char()编码的方法替换字符串。例如:

SELECT 'foo' —— SELECT CHAR(102)+CHAR(111)+CHAR(111)

使用--no-escape参数将关闭此功能。


--prefix,--suffix

在有些环境中,需要在注入的payload的前面或者后面加一些字符,来保证payload的正常执行。

例如,如果代码中是这样调用数据库的:

$query = "SELECT * FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1";

这时你就需要--prefix和--suffix参数了

sqlmap -u "http://1.1.1.1/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "’)" --suffix "AND (’abc’=’abc"

这时执行的sql语句为:

$query = "SELECT * FROM users WHERE id=(’1’) AND (’abc’=’abc’) LIMIT 0, 1";

注意:前提是已经得知了目标服务器查询时使用的sql语句,在基于错误的检测时,可能会把服务端的sql语句爆出来。


--tamper

使用--tamper参数对数据做修改来绕过WAF等设备的过滤。

tamper的位置:/usr/share/sqlmap/tamper/

例如:可以一次指定多个tamper,sqlmap会依次尝试,使用-v 3显示详细信息

root@kali:~# sqlmap -u "http://192.168.80.33/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=4pq76dua60ghqc807869jrb9v2" --tamper="between.py,randomcase.py,space2comment.py" -v 3

相关文章

网友评论

      本文标题:sqlmap INJECTION

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