发布于 

流量分析-Q4

0x01 涉及工具&实验目的

  • 工具:wireshark,sublime Text,visualStudio,charles
  • 实验目的:获取 flag

0x02 详细步骤

  • 查看数据包长度,总共7053
    • 使用charles 查看数据包,发现状态码200的只有4条
    • image.png
      结合wireshark分析,发现只有4条数据,我们右键添加mark标记

      image.png

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

  • 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_decodebase64解码
    解码: 22aW5kZXgucGhwindex.php
    image.png
    解码:%22ZmxhZy50eHQ%22flag.txt
    image.png

查看 Response in frame
image.png

  • 获取到 附件 信息,但是显示乱码
    image.png

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

选择解压缩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}