bugku 流量分析之信息提取

bugku 流量分析之信息提取_第1张图片

题目给出提示,使用了sqlmap

sql注入,然后搜索下http

bugku 流量分析之信息提取_第2张图片

查出来,简单分析下,这是一个sql盲注

http中响应全部都是200,也就是说,我们不能通过响应状态来判断,

sqlmap先通过注入判断出表及字段,然后再通过盲注判断flag的每一个字符的ascii码。

前面那些判断表等都不管,只管后面盲注出的数据

bugku 流量分析之信息提取_第3张图片

先这样过滤出求数据第一个字符的   %2C1%2C1%29%29%3E   即,1,1))>

原来 是1 AND ORD(MID((SELECT IFNULL(CAST(`value` AS CHAR),0x20) FROM isg.flags ORDER BY `value` LIMIT 0,1),1,1))>64 ,为了简便,我就取了后面一点

通过上面7个包可以大概分析出,这个可以通过Length或者File Data的长度来判断回显是1还是0

Length在430左右的回显是0,而在467左右的回显为1,根据这样来判断,很快知道第一个字符的ascii码为73 即  ‘I’

可以简便一点,把回显为0的包去掉,然后在剩余的包中找出%3E后面数字最大的加1即可,

要去掉回显为0的包,我找了蛮久,但只有个http.content_length >= 130,这个130我是对比分析回显0和1两种包的File Data长度来取的,回显为0的File Data长度大概在120上下,回显为1的File Data长度大概在160上下,我就取个中间的值。

bugku 流量分析之信息提取_第4张图片

多了一个不一样的,把contains内容再改下

bugku 流量分析之信息提取_第5张图片

之后就是对比然后再更换数字去获取所有字符了,但是好麻烦!我弄到第10个字符就放弃了,想想如何用python搞定,偷懒下

 

先导出,这样过滤除了第一个不是外,其他都是回显为1的响应包,所以把第一个右击忽略

bugku 流量分析之信息提取_第6张图片

然后文件->导出分组解析结果->为纯文本

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re

#信息提取

#用正则把包含字符位置以及判断的ascii码找出来,写入txt
f = open('q.txt','r+')
fa = open('sqlmap.txt','w+')
regex = re.compile('C[\w]+%2C1%29%29%3E(.+?)]')
line = f.readline();
while line:
    # print datapat.findall(line)
    m = regex.search(line)
    if m:
        fa.writelines(m.group(0)+'\n')
        print m.group(0)
    line = f.readline()
f.close()
fa.close()



bugku 流量分析之信息提取_第7张图片

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re


#找出每个字符所判断的最大ascii,并使其加1操作
flag = ''
f = open('sqlmap.txt','r+')
line = f.readline()
for i in range(1,34):
    regex = re.compile(str(i)+'%2C1%29%29%3E(.+?)]')
    tmp = 0
    while line:
        m = regex.findall(line)
        if m:
            print m
            if int(m[0]) >= tmp:
                tmp = int(m[0])+1
            line = f.readline()
        else:
            break
    flag = flag + chr(tmp)
print flag

 

这个我没写清楚,不晓得能不能容易理解。

例如第一个字符,他分别判断了ascii码以及回显如下:

ascii 回显
64 1
96 0
80 0
72 1
76 0
74 0
73 0

 

第一个包判断字符ascii码大于64,第四个包说明大于72,但在最后一个包却小于等于73,说明为73,之后我就把无回显包去掉,再在有回显的包里取出ascii最大的一个进行加一操作就得出他的ascii码。

 

你可能感兴趣的:(渗透笔记)