sqlmap中文手册 (5)

现在有很多网站通过在表单中添加值为随机生成的token的隐藏字段来防止CSRF攻击,Sqlmap会自动识别出这种保护方式并绕过。但自动识别有可能失效,此时就要用到这两个参数。

“–csrf-token”用于指定包含token的隐藏字段名,若这个字段名不是常见的防止CSRF攻击的字段名Sqlmap可能不能自动识别出,需要手动指定。如Django中该字段名为“csrfmiddlewaretoken”,明显与CSRF攻击有关。

“–csrf-url”用于从任意的URL中回收token值。若最初有漏洞的目标URL中没有包含token值而又要求在其他地址提取token值时该参数就很有用。

22.强制使用SSL

参数:–force-ssl

23.在每次请求前执行特定Python代码

参数:–eval

直接看例子:

  python sqlmap.py -u "http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"

每次返送请求前,Sqlmap都会依据id值重新计算hash值并更新GET请求中的hash值。

六、优化

这些参数可以优化Sqlmap的性能。

1.一键优化

参数:-o

添加此参数相当于同时添加下列三个优化参数:

–keep-alive

–null-connection

–threads=3 (如果没有设置一个更好的值)

这些参数具体含义见后文。

2.HTTP长连接

参数:–keep-alive

该参数让Sqlmap使用HTTP长连接。该参数与“–proxy”矛盾。

3.HTTP空连接

参数:–null-connection

有一种特殊的HTTP请求类型可以直接获得HTTP响应的大小而不用获得HTTP响应体。显然这在布尔型盲注中可以节约很大的带宽。当然这一技术是需要服务器端支持的。该参数与“–text-only”矛盾。

4.HTTP并发

参数:–threads

使用该参数指定Sqlmap可以达到的最大并发数。从性能和网站承受能力两方面考虑最大并发数不要超过10。

七、注入

这些参数被用于指定要测试的参数、定制攻击荷载和选择篡改脚本。

1.要测试的注入点

参数:-p和–skip

默认情况下Sqlmap会测试所有GET参数和POST参数,当level大于等于2时会测试cookie参数,当level大于等于3时会测试User-Agent和Referer。实际上还可以手动指定一个以逗号分隔的、要测试的参数列表,该列表中的参数不受level限制。这就是“-p”的作用。

举个例子,若想只测试GET参数“id”和User-Agent,则可以这么写:

  -p "id,user-agent"

如果不想测试某一参数则可以使用“–skip”。如设置了level为5但不想测试User-Agent和Referer,则可以这么写:

  --level=5 --skip="user-agent,referer"

有时会遇到伪静态网页。动态网页会明目张胆地列出参数,如:

  /user.php?id=1

显然参数是id,值为1。但若是伪静态网页则可能这样写:

  /user/1/

将参数隐藏在URL中。通常情况下Sqlmap不会对这样的伪静态网页的参数做测试,因为Sqlmap无法判断哪个是参数。若想要对这样的伪静态进行测试,只需要加上“*”,告诉Sqlmap哪个是伪静态参数就行,剩下事的和GET参数没有什么区别。如:

  python sqlmap.py -u "http(s)://target.cc/user/1*/"

2.指定数据库管理系统

参数:–dbms

dbms是“Database Management System”的缩写。默认情况下Sqlmap会自动检测网站使用的数据库管理系统,Sqlmap支持以下这些数据库管理系统:

MySQL

Oracle

PostgreSQL

Microsoft SQL Server

Microsoft Access

Firebird

SQLite

Sybase

SAP MaxDB

DB2

如果Sqlmap自动检测失败或是不想让Sqlmap进行数据库指纹检测,可以使用参数“–dbms”手动指定数据库管理系统,如:“–dbms postgresql”。

对于Mysql和Microsoft SQL Server和要这样指定:

  --dbms MySQL <version>

  --dbms Microsoft SQL Server <version>

对于MySQL来说,是类似这样的:5.0。对于Microsoft SQL Server来说,是类似这样的:2005。

如果在添加“–dbms”参数的同时还添加了“–fingerprint”,Sqlmap只会在指定的数据库管理系统内进行指纹识别。

只有在很确定时使用“–dbms”,否则还是让Sqlmap自动检测更好些。

3.指定运行数据库管理系统的操作系统

参数:–os

默认情况下Sqlmap会自动检测运行数据库管理系统的操作系统,目前完全支持的操作系统有:

Linux

Windows

如果很确定可以使用参数“–os”指定运行数据库管理系统的操作系统。当然在只用很确定时才应该使用此参数,否则还是让Sqlmap自动检测更好些。

4.生成无效参数值时强制使用大数

参数:–invalid-bignum

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyxgg.html