流量分析-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}