Web安全攻防 学习笔记
一、Sqlmap 注入技术参数
1.1、sqlmap 设置具体 SQL 注入技术
参数 --technique
用于指定检测注入时所用技术。默认情况下 Sqlmap 会使用自己支持的全部技术进行检测。 此参数后跟表示检测技术的大写字母,其值为 B、E、U、S、T 或 Q,含义如下:
-
B:Boolean-based blind(布尔型注入)
-
E:Error-based(报错型注入)
-
U:Union query-based(可联合查询注入)
-
S:Stacked queries(可多语句查询注入)
-
T:Time-based blind(基于时间延迟注入)
-
Q:Inline queries(嵌套查询注入)
可以用 "--technique ES"
来指定使用两种检测技术。"--technique BEUSTQ"
与默认情况等效。
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --technique EB --banner
1.2、sqlmap 设置时间盲注延迟时间
用 --time-sec 3
参数设置基于时间延迟注入中延时时长,默认为 5 秒.
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --time-sec 3 --banner
1.3、sqlmap 设置 union 字段数
在进行联合查询注入时,Sqlmap 会自动检测列数,范围是 1 到 10。当 level 值较高时列数检测范 围的上限会扩大到 50。
可以用此参数指定列数检测范围,如 --union-cols 12-16
就会让 Sqlmap 的列数检测范围变成 12 到 16。
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-3/" --union-cols 12-16 -v 3 --banner
但是,注入时过多使用空字符(NULL)会使注入失败率增高。因此可以结合 --union-char 替换null的字符串
参数改善。
1.4、sqlmap 设置 union 字符
默认情况下 Sqlmap 进行联合查询注入时使用空字符(NULL)。但当 level 值较高时 Sqlmap 会生成随机数用于联合查询注入。 因为有时使用空字符注入会失败而使用随机数会成功。
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-4/" --union-cols 12-16 --union-char 666 -v 3 --banner
1.5、sqlmap 设置 union 查询表
有些情况下在联合查询中必须指定一个有效和可访问的表名,否则联合查询会执行失败。参数 --union-from 表名
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-4/" --union-cols 12-16 --union-char 666 --union-from hello -v 3 --banner
# 当然,这个表名一般获取到目标数据库的信息后再操作会好一点,如果不知道也可以蒙一个。
1.6、sqlmap 识别指纹
探测目标指纹信息,参数 -f 或者 --fingerprint
,它的效果与 --banner
相似。
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-3/?id=1" -f