【攻防世界misc--流量分析1】

一、前言

刚开始入门流量分析题目,后续几天也会发关于流量分析的wp 。

二、思路

下载附件,用 wireshark 打开,分析流量包,使用http追踪流进行追踪

发现 post 请求中有 flag 字样,由于URI和乱码不便于阅读,先对这段请求进行encodeURI解码。

URL转码,encodeURI,encodeURIComponent — 在线工具

【攻防世界misc--流量分析1】_第1张图片

第一次解码后不完全,还需要第二次解码,得到上图结果。其中,这段代码比较重要

id=1) and if((ascii(substr((select flag from flag),1,1))='102'),sleep(3),0) --  

select flag from flag表示要查询 flag
substr((select flag from flag),1,1))表示要截取字符串 flag(这里 flag 可能等于 kdadhak等,不一定就是 flag),从第一位开始,且只截取一位
ascii(s)=‘102’表示截取的字符的 ascii 码值为 102
if(x,y,0)表示如果满足 x,就执行 y,否则返回 0;在此处意思就是如果截取的字符的 ascii 码值为 102,那么就休眠 3s。因此本题考察延时注入

具体分析如上,之后查询一下延时超过3秒的http请求,可以从左侧 No.看出来是按照请求的先后进行显示。因此,我们只需要按照请求的顺序,将每一次得到的 ascii 码值(比如上面的例子是 102)取出来转化为英文字母,再拼接在一起,就是 flag

【攻防世界misc--流量分析1】_第2张图片

def Tansform(list): #构造一个函数,以实现从ascii 到char 的转换,list 是参数
    output=" " #创建一个空字符串,用于存储转换后的字符
    for i in list:
        output+=chr(i)
    return output
lisT=[102, 108, 97, 103, 123, 49, 113, 119, 121, 50, 55, 56, 49, 125]#按照顺序列出 ascii 码值,查看方法同上述‘102’相同,都是两次解密后看延时注入语句,一定要按照顺序!!!
print(Tansform(lisT))#传参并打印

得到 flag

你可能感兴趣的:(CTFmisc,CTF,网络安全,python)