MISC杂项时间盲注及布尔盲注脚本 鹤城杯

0x01 流量分析

本人web狗一只,最近学了一些网络协议方面的 所以做了一下MISC的两道流量分析,大佬们都觉着太简单没放脚本,我就放一下自己写的(小菜鸡勿喷)

<--第一道流量分析不难,主要就是布尔盲注的流量包分析,直接查看http请求包即可我们可以通过观察看到注入成功的响应长度不同,这里成功的为978字节 
失败的994字节.不要问为什么.其实也可以直接判断.978的流量比994的少了非常多 显然就是成功的(因为这里是获取ASCII码.所以判断成功的流量肯定更少)
所以我们只需要提取出这一部分成功的流量出来进行分析即可-->

在这里插入图片描述

<--使用过滤语法  frame.len == 978 过滤长度为978的包 然后导出为文本一定要先过滤再导出 不然就会把全部的导出-->

在这里插入图片描述
在这里插入图片描述

import re

#Request URI: http://192.168.246.1/ctf/Less-5/?id=1'%20and%20ascii(substr((select%20flag%20#from%20t),1,1))=102--+
nums = []
obj1 = re.compile(r"1\)\)=(?P<num1>.*)\b",re.S)#开启贪婪模式匹配这里一定要使用.*贪婪模式 如果用.*?可能匹配失败 \b代表结尾
def getAscii():
    with open("re.txt", "r", encoding="utf-8") as f:
        for line in f.readlines():
            line = line.strip()
            result = obj1.finditer(line)
            for it in result:
                num = it.group("num1")
                nums.append(num)


def getflag():
    flag = ""
    for i in nums:
        i = chr(int(i))
        flag = flag + i
        print(flag)

if __name__ == '__main__':
    getAscii()
    getflag()

在这里插入图片描述
第二道题稍微难点,前面获得百度网盘提取码的我就不讲了,可以参考其他大佬的wp 我这里就放一下脚本

0x02 A_MISC

<--这道题也是sql注入的分析 但是这里是时间盲注并不是布尔盲注 所以我们不能通过返回包的长度进行判断了.我们需要通过查看上一步是否成功来判断这里丢一个大佬的连接参考-->

某行业攻防培训-----流量分析之-----sql盲注
这里我们将所有http的包导出
在这里插入图片描述

然后进行跑脚本

import re


#username[1]" = "in ('-1' ))) or if(ascii(substring((select 
#flag from flag limit 0,1),1,1))=30,sleep(5),1)
asciis = []
asciis1 = []
obj = re.compile(r"limit 0,1\),(?P<num>.*),1\)\)=(?
P<asciinum>.*)\b,sleep",re.S)
#匹配正则表达式  第一个匹配lit 但是我们需要的只有ascii值  这里用.*贪婪模式  否则匹配失败


def getASCII():
    with open("time.txt","r",encoding="utf-8") as f:
        for line in f.readlines():  #readlines()读取出来为列表所以我们直接迭代 用strip()去除空格
            line = line.strip()
            result = obj.finditer(line) #正则匹配
            for it in result:
                num = it.group("num")  #lit值
                asciinum = it.group("asciinum") #ASCIi值 注意这里提取的都为str类型  所以以下都要做int强转
                asciis.append(asciinum) #将payload的全部ascii值(包括失败的)写入列表

#使用一个循环 时间盲注可知ascii正确后才会进行下一次匹配  所以我们这里直接一个一个循环
# 然后当正确的如102时  下一个又从30开始  所以会比前面小  利用这个特点筛选将正确的ASCIi写入新的列表
def getASCII2():
    a = 1
    while a < len(asciis):
        if int(asciis[a]) < int(asciis[a-1]):
            asciis1.append(int(asciis[a-1]))
        a += 1


def getFLag():  #转换ASCIi
    flag = ""
    for i in asciis1:
        i = chr(i)
        flag = flag + i
        print(flag)


if __name__ == '__main__':
    getASCII()
    getASCII2()
    getFLag()

在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值