2025年网络安全技能竞赛“观安杯”管理运维赛 WEB/PWN wp
字数 1018 2025-08-26 22:11:35

2025年"观安杯"网络安全技能竞赛WEB/PWN题解

blindpwn题解

漏洞分析

  1. 输入长度限制:程序允许输入最大长度为16字节
  2. 漏洞类型:存在两种可能的漏洞点:
    • 格式化字符串漏洞(初步测试未发现)
    • 栈溢出漏洞(主要利用点)

关键发现

  1. 长度验证绕过

    • 输入负数长度时,程序会将有符号数转换为无符号数,导致可以输入超长字符串
    • 这种整数转换漏洞是本题的关键突破点
  2. 栈信息泄露

    • 通过输出超长字符串,可以泄露栈上的关键数据:
      • Canary值(位于偏移0x11处)
      • EBP值
      • 返回地址(程序地址)
      • libc地址(但无偏移信息)
  3. DEBUG模式

    • 程序存在DEBUG模式,当触发时会泄露write的libc地址
    • DEBUG模式的控制位于返回地址下方

利用步骤

  1. 获取关键信息

    • 通过发送超长字符串泄露canary、ebp和返回地址
    • 确定程序为32位架构(通过地址特征判断)
  2. 触发DEBUG模式

    • 覆盖返回地址下方的DEBUG控制位,使程序进入DEBUG模式
    • 获取write函数的libc地址
  3. libc识别

    • 通过泄露的write地址,确定使用的libc版本为:
      libc6-i386_2.35-0ubuntu3.10_amd64
  4. 构造ROP链

    • 由于只能执行一次输入,需要让程序再次调用vuln函数
    • 通过调整返回地址(减去偏移7)实现循环调用
  5. 最终利用

    • 构造32位ret2libc攻击
    • 获取shell

ezbank题解

黑盒测试发现

  1. 功能分析

    • 注册账号功能
    • 转账功能
    • 购买礼物功能
  2. 漏洞利用

    • 猜测用户ID 1为管理员账户
    • 通过转账功能向自己账户转账(类似THM入门题)
    • 修改转账请求中的用户ID参数
  3. 利用步骤

    • 注册普通账户
    • 拦截转账请求
    • 修改目标用户ID为1(管理员)
    • 成功获取管理员权限并购买flag

babysec题解

解题步骤

  1. 目录扫描

    • 发现start.sh文件,内含管理员账号密码
  2. 登录利用

    • 使用获取的凭据登录系统
    • 在Admin Panel中找到并获取flag

总结

本次比赛的三道题目涵盖了不同类型的漏洞和利用技术:

  1. blindpwn

    • 整数转换漏洞
    • 栈溢出利用
    • 信息泄露
    • ret2libc攻击
  2. ezbank

    • 逻辑漏洞(IDOR)
    • 参数篡改
  3. babysec

    • 信息泄露(敏感文件)
    • 弱凭据利用

这些题目展示了从简单信息泄露到复杂栈溢出利用的多种攻击技术,是很好的CTF学习案例。

2025年"观安杯"网络安全技能竞赛WEB/PWN题解 blindpwn题解 漏洞分析 输入长度限制 :程序允许输入最大长度为16字节 漏洞类型 :存在两种可能的漏洞点: 格式化字符串漏洞(初步测试未发现) 栈溢出漏洞(主要利用点) 关键发现 长度验证绕过 : 输入负数长度时,程序会将有符号数转换为无符号数,导致可以输入超长字符串 这种整数转换漏洞是本题的关键突破点 栈信息泄露 : 通过输出超长字符串,可以泄露栈上的关键数据: Canary值(位于偏移0x11处) EBP值 返回地址(程序地址) libc地址(但无偏移信息) DEBUG模式 : 程序存在DEBUG模式,当触发时会泄露write的libc地址 DEBUG模式的控制位于返回地址下方 利用步骤 获取关键信息 : 通过发送超长字符串泄露canary、ebp和返回地址 确定程序为32位架构(通过地址特征判断) 触发DEBUG模式 : 覆盖返回地址下方的DEBUG控制位,使程序进入DEBUG模式 获取write函数的libc地址 libc识别 : 通过泄露的write地址,确定使用的libc版本为: libc6-i386_2.35-0ubuntu3.10_amd64 构造ROP链 : 由于只能执行一次输入,需要让程序再次调用vuln函数 通过调整返回地址(减去偏移7)实现循环调用 最终利用 : 构造32位ret2libc攻击 获取shell ezbank题解 黑盒测试发现 功能分析 : 注册账号功能 转账功能 购买礼物功能 漏洞利用 : 猜测用户ID 1为管理员账户 通过转账功能向自己账户转账(类似THM入门题) 修改转账请求中的用户ID参数 利用步骤 : 注册普通账户 拦截转账请求 修改目标用户ID为1(管理员) 成功获取管理员权限并购买flag babysec题解 解题步骤 目录扫描 : 发现 start.sh 文件,内含管理员账号密码 登录利用 : 使用获取的凭据登录系统 在Admin Panel中找到并获取flag 总结 本次比赛的三道题目涵盖了不同类型的漏洞和利用技术: blindpwn : 整数转换漏洞 栈溢出利用 信息泄露 ret2libc攻击 ezbank : 逻辑漏洞(IDOR) 参数篡改 babysec : 信息泄露(敏感文件) 弱凭据利用 这些题目展示了从简单信息泄露到复杂栈溢出利用的多种攻击技术,是很好的CTF学习案例。