延时注入流量分析
附件是一个流量包,查找flag关键字
分析
1. 分析流量包里面的操作
随意打开一个包,追踪HTTP流量包
解密请求(URL两次解密)
语句if((ascii(substr((select flag from flag),1,1))='86'),sleep(3),0)
明显的延时注入
2. 筛选注入成功的流量
由于使用了sleep(3)
,成功的注入语句会延时3秒。
筛选响应时间大于3秒的流量包:frame.time_delta > 3
3. 解码对应请求
其实应该是一个批量操作,感觉可以借助tshark工具筛选流量包,追踪对应的请求,把请求另存到文件中直接一次性去解码,但是我还不会设置参数,手工操作的。
把前面得到11条流量包,解码请求,发现缺少3和5对应位置的ASCII码,然后我去匹配了请求包,将测试url中该位置上的最后一次测试的ASCII码作为成功回显的请求(对比了一下筛出来的流量响应序号和时间情况,应该差不多)
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
表示相较于上一个显示帧的时间增量
单位都是秒。