XCTF-Misc1 延时注入流量分析

延时注入流量分析

XCTF-Misc1 延时注入流量分析_第1张图片
附件是一个流量包,查找flag关键字
XCTF-Misc1 延时注入流量分析_第2张图片

分析

1. 分析流量包里面的操作

随意打开一个包,追踪HTTP流量包
XCTF-Misc1 延时注入流量分析_第3张图片
解密请求(URL两次解密)
XCTF-Misc1 延时注入流量分析_第4张图片
语句if((ascii(substr((select flag from flag),1,1))='86'),sleep(3),0) 明显的延时注入

2. 筛选注入成功的流量

由于使用了sleep(3),成功的注入语句会延时3秒。
筛选响应时间大于3秒的流量包:frame.time_delta > 3
XCTF-Misc1 延时注入流量分析_第5张图片

3. 解码对应请求

其实应该是一个批量操作,感觉可以借助tshark工具筛选流量包,追踪对应的请求,把请求另存到文件中直接一次性去解码,但是我还不会设置参数,手工操作的。
把前面得到11条流量包,解码请求,发现缺少3和5对应位置的ASCII码,然后我去匹配了请求包,将测试url中该位置上的最后一次测试的ASCII码作为成功回显的请求(对比了一下筛出来的流量响应序号和时间情况,应该差不多)
XCTF-Misc1 延时注入流量分析_第6张图片
XCTF-Misc1 延时注入流量分析_第7张图片

4. 将ASCII码转换为字符串

x = [102, 108, 97, 103, 123, 49, 113, 119, 121, 50, 55, 56, 49, 125]
y = ""
for i in x:
    y += chr(i)
print(y)

得到 flag{1qwy2781}

小结

  • 延时注入
    sleep()函数,让程序挂起(单位为秒)
    if(x,a,b)语句,如果x为真,则执行a,否则执行b
    substr(string, start, length)函数截取字符串

  • Wireshark筛选器
    http 筛选http协议
    http contains flag 匹配flag关键词
    frame.time_delta > 3筛选响应时间>3

  • Wireshark中time过滤
    frame.time 表示帧被捕获的绝对时间
    frame.time_delta 表示相较于上一个捕获帧的时间增量
    frame.time_delta_displayed 表示相较于上一个显示帧的时间增量
    单位都是秒。

你可能感兴趣的:(CTF练习记录,网络安全,ctf,流量分析)