流量分析-Q4
0x01 涉及工具&实验目的
- 工具:
wireshark,sublime Text,visualStudio,charles - 实验目的:获取
flag
0x02 详细步骤
- 查看数据包长度,总共
7053- 使用
charles查看数据包,发现状态码为200的只有4条 
结合wireshark分析,发现只有4条数据,我们右键添加mark标记


- 使用
Mark后,返回首页->往下滑动获取到完整的两条数据包:Request URI

http://192.168.1.105/?c=print_r(gzcompress(file_get_contents(base64_decode(%22aW5kZXgucGhw%22))));http://192.168.1.105/?c=print_r(gzcompress(file_get_contents(base64_decode(%22ZmxhZy50eHQ%22))));
解析一下发现了问题
print_r:打印可读的变量信息,Return参数设置为True打印字符串
gzcompress: 压缩一个字符串,gz表示linux默认压缩文件
file_get_contents:将整个文件读入一个字符串
base64_decode:base64解码
解码:22aW5kZXgucGhw为index.php

解码:%22ZmxhZy50eHQ%22为flag.txt

查看 Response in frame

- 获取到
附件信息,但是显示乱码

可以使用两种办法:
1. 编写POC,解压数据
2. 在线解压数据包,获取flag

选择解压缩Compressed 就可以看到flag信息
0x03 POC
POC -l
import zlib
# 将十六进制字符串转换为字节流
input_str = '789ccbc82c492e49abb6304d32484c354eb4483437b048b234324f4a334c343648494b334e36333531a8e5020018cb0c6c'
input_bytes = bytes.fromhex(input_str)
# 解压缩数据
decompressed_data = zlib.decompress(input_bytes, zlib.MAX_WBITS | 32)
# 将字节流转换为字符串
output_str = decompressed_data.decode('utf-8')
print(output_str)0x04 结论
hitctf{85b0ae3a8a708b927bf1a30dff3c6540}





