#1## 标题: Sqlmap性能优化
1.1、sqlmap设置持久HTTP长连接:
sqlmap中可以设置连接为持久连接;
参数:keep-alive(避免每次重复连接,并且它和–proxy代理IP冲突,不能同时使用)
1.2、sqlmap设置不接收HTTP Bod:
参数: --null-connection
sqlmap中设置空连接,表示不接受HTTP当中的Body。 可以直接获得HTTP响应的大小而不用获得HTTP响应体,常用在盲注过程中
1.3、sqlmap设置多线程:
参数 --thread
sqlmap中设置同时发送多少个HTTP请求的多线程(默认是3个,同时注意不要设置太多,否则容易被探测的网站发现)
1.4、一键优化:
参数:-o
添加此参数相当于同时添加下列三个优化参数
–keep-alive
–null-connection
–threads=3sqlmap自定义检测参数
#2## 标题: sqlmap自定义检测参数
2.1、sqlmap设置探测等级:
参数:–level
此参数用于指定检测级别,有1~5共5级。默认为1,表示做最少的检测,相应的,5级表示 做最多的检测。
2.2、sqlmap设置风险等级:
参数:–-risk
此参数用于指定风险等级,有1~3共3级。
默认风险等级为1,此等级在大多数情况下对测试目标无害。且每个等级探测过程中添加的方式不同,
等级2添加了基于时间的注入测试;
等级3添加了OR测试;
#3## 标题: sqlmap指定位置注入
3.1、sqlmap设置指定注入参数:
参数:-p
默认情况下Sqlmap会测试所有GET参数和POST参数,当level大于等于2时会测试cookie参数, 当level大于等于3时会测试User-Agent和Referer。实际上还可以手动指定一个以逗号分隔的、 要测试的参数列表,该列表中的参数不受level限制。这就是“-p”的作用。
参数:-skip
如果不想测试某一参数则可以使用 --skip。
**#4## 标题: Sqlmap设置URI注入位置## **
4.1、当注入点位于URI本身内部时,会出现一些特殊情况。除非手动指向URI路径,否则sqlmap不会对URI路径
执行任何自动测试。必须在命令行中添加星号()来指定这些注入点。(此处的UR相当于URL的子集)
例:
python sqlmap.py -u "http://targeturl/param1/value1/param2/value2/"
#5## 标题:sqlmap注入参数
5.1、sqlmap强制设置DBMS:
参数 :–dbms 数据库类型(使用此参数可以指定数据库类型探测)
默认情况下sqlmap会自动识别探测目标web应用程序的后端数据库管理系统(DBMS),sqlmap支持 的DBMS种类
MySQL
Oracle
PostgreSQL
Microsoft SQL Server
Microsoft Access
Firebird
SQLite
Sybase
SAP MaxDB
DB2
#6## 标题: sqlmap强制设置OS系统
6.1、参数:–os (指定系统类型)
默认情况下sqlmap会自动探测目标web应用程序的后端操作系统,sqlmap完全支持的OS种类Linux、 Windows
#7## 标题: Sqlmap强制设置无效值替换
7.1、参数:–invalid-bignum
在sqlmap需要使原始参数值无效(例如id=13)时,它使用经典的否定(例如id=-13)。
可以强制使用大整数值来实现相同的目标(例如id=99999999);
例:
python sqlmap.py -u “http://127.0.0.1/sqli/Less-1/?id=1” --invalid-bignum --banner
7.2、参数:–invalid-logical
可以强制使用布尔操作来实现相同的目标(例如id=13 and18=19)。
7.3、参数:–invalid-string
可以强制使用随机字符串来实现相同的目标(例如id=akewmc);
(此处设置无效值替换,一般后面跟随的是恶意的SQL操作语句);
#8## 标题: Sqlmap自定义注入负载位置
8.1、参数:–prefix (设置SQL注入Payload前缀)
参数:–suffix (设置SQL注入Payload后缀)
在某些情况下,只有当用户提供要附加到注入负载的特定后缀时,易受攻击的参数才可被利用。当用户已经知道查询语法并希望通过直接提供注入有效负载前缀和后缀来检测和利用SQL注入时,这些选项就派上用场了。
此处的–prefix" ‘) " 目的是用来闭合id=(’ 这个括号的
等于下面的查询语句;
#9## 标题: Sqlmap设置Tamper脚本
9.1、参数:–tamper
sqlmap本身不会混淆发送的有效负载,除了单引号之间的字符串被CHAR()类似的表示形式所取代之外。sqlmap通过Tamper脚本来绕过WAF等防御措施,可以在tamper文件夹下找到所有sqlmap自带的tamper脚本。
python sqlmap.py -u “http://ip/sqlmap/mysql/get_int.php?id=1” --tamper “between.py,randomcase.py,space2comment.py” -v 3
#10## 标题: sqlmap注入技术参数
10.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”与默认情况等效。
10.2、sqlmap设置时间盲注延迟时间:
参数:–time-sec
此参数设置基于时间延迟注入中延时时长,默认为5秒
(注意与–delay混淆;–delay是设置sqlmap发包的延迟时间)
10.3、sqlmap设置union字段数:
参数:–union-cols
在进行联合查询注入时,Sqlmap会自动检测列数,范围是1到10。当level值较高时列数检测范 围的上限会扩大到50。
可以用此参数指定列数检测范围,如–union-cols 12-16就会让Sqlmap的列数检测范围变成 12到16。
10.4、sqlmap设置union字符:
参数:–union-char
默认情况下Sqlmap进行联合查询注入时使用空字符(NULL)。但当level值较高时Sqlmap会生 成随机数用于联合查询注入。 因为有时使用空字符注入会失败而使用随机数可以提高探测成功率;
10.5、sqlmap设置union查询表:
参数:–union-from
有些情况下在联合查询中必须指定一个有效和可访问的表名,否则联合查询会执行失败
#11## 标题: sqlmap识别指纹
11.1、参数: -f或者–fingerprint
探测目标指纹信息;和–banner参数使用类似;查询基础信息;