经典案例

津门杯writeup

2025-07-23

一Web类题目

1. power_cut

  • 漏洞点:PHP反序列化漏洞 + WAF绕过
  • 解法
  • 构造序列化字符串 `O:6:"weblog":1:{s:10:"weblogfile";s:11:"/etc/passwd";}` 读取敏感文件。
  • 绕过WAF过滤规则(如过滤 `flag` 关键词)使用双写:`/flflagag` 替代 `/flag`。
  • 关键技巧:利用 `__wakeup` 触发 `logger` 类的文件读取操作。
  • 2. hate_php

  • 限制:过滤所有字母数字`_$@` 符号。
  • 解法
  • 通过非字母数字的PHP短标签执行命令:`?%3E%3C?=/???/???%20/?????%3E`。
  • 等效命令:`/bin/cat /flag`,利用通配符绕过字符限制。
  • Payload示例
  • http

    3. GoOSS

  • 漏洞点:SSRF(服务端请求伪造)
  • 解法
  • 利用URL参数访问内网服务(如 `file://` 协议读取本地文件)。
  • 结合Gin框架路由缺陷绕过目录限制。
  • ⚙️ 二逆向工程(GoodRE)

  • 题目特点:64位程序,输入长度为64的十六进制字符串。
  • 分析过程
  • 1. 识别TEA加密算法特征(0x9E3779B9常量值)。

    2. 密钥初始化:通过动调试获取密钥结构体(如 `0x11` 填充)。

    3. 解密脚本:

    void decrypt(uint32_t* v, uint32_t* k) {

    津门杯writeup

    uint32_t v0 = v[0], v1 = v[1], sum = 0xC6EF3720;

    for(int i=0; i<32; i++) {

    v1 -= ((v0<<4) + k[2]) ^ (v0 + sum) ^ ((v0>>5) + k[3]);

    v0 -= ((v1<<4) + k[0]) ^ (v1 + sum) ^ ((v1>>5) + k[1]);

    sum -= 0x9E3779B9;

    v[0] = v0; v[1] = v1;

  • 关键点:对比密文与内存中的校验值,正确则输出flag。
  • ️ 三隐写题(m1)

  • 题目:津门杯2021-m1(图片隐写)
  • 两种解法
  • 1. zsteg工具

    bash

    zsteg -a challenge.bmp # 逐层扫描隐藏数据

    一竞技官网APP

    echo "ZmxhZ3tsNURHcUYxcFB6T2IyTFU5MTlMTWFCWVM1QjFHMDFGRH0=" | base64 -d

    2. Stegsolve

  • 在RGB通道的0位平面提取Base64字符串。
  • Flag:`flag{l5DGqF1pPzOb2LU919LMaBYS5B1G01FD}`。
  • 四总结

  • Web方向:聚焦反序列化字符过滤绕过SSRF利用。
  • 逆向方向:TEA算法识别与密钥恢复是核心。
  • 隐写方向:工具自动化扫描(zsteg/stegsolve)结合Base64解码。
  • 比赛中需综合运用代码审计动静态分析及漏洞利用技巧,建议结合具体题目环境测试。