Polarctf2025春季赛题解
字数 1269 2025-08-29 08:29:58
PolarCTF 2025春季赛题解教学文档
1. bllhl_mom题目解析
漏洞分析
- 存在三次利用机会:
- 第一次:泄露canary
- 第二次:任意数据写入
- 第三次:进行栈迁移到bss段
利用方法
- 通过三次操作完成攻击:
- 第一次操作获取canary值
- 第二次操作写入任意数据
- 第三次操作执行栈迁移到bss段
- 最终执行
system($0)获取shell
2. koi题目解析
漏洞分析
- xxx函数中存在栈溢出漏洞
- 可构造ret2libc攻击
利用条件
- 需要使变量v4和n都等于520
- 其他函数中只有wrshell函数有用
利用方法
- 溢出8字节覆盖rbp
- 分析main函数switch后的逻辑:
- 将rbp-4作为scanf读入的地址
- 在wrshell函数中控制rbp为n的地址+4,从而向n中写入数据
- 完成ret2libc攻击
3. thinks题目解析
漏洞分析
- 输入5212,判断magic是否大于0x145c
- 如果大于则进入wish函数(后门函数)
- 无UAF漏洞,但edit函数存在堆溢出
利用方法
- 先free一个堆块进入fastbins
- 对该堆块的上一个堆块进行edit
- 利用溢出修改被free堆块的fd为magic附近地址
- 再次申请该堆块,向magic写入数据
4. ez_heap1题目解析
题目特点
- 与thinks题目的攻击方法相同
- 使用one_gadget
- 基于2.23版本的堆题标准菜单题
- 存在UAF漏洞
5. fmt_text题目解析
漏洞分析
- 32位程序
- GOT表可攻击
- 存在gets溢出和格式化字符串漏洞
利用方法
- 使用fmtstr_payload
- 修改printf为system
6. libc题目解析
题目特点
- 32位的ret2libc
- 标准攻击方式,无特殊技巧
7. bllbl_shellcode_2题目解析
漏洞分析
- 存在jmp_rsp指令
- 只有5+8个字节空间写入shellcode
利用方法
- 构造execve shellcode
- 刚好13个字节完成攻击
8. NICOUAF题目解析
漏洞分析
- 32位堆题
- 存在UAF漏洞
利用点
- show函数中存在判断逻辑:
- 如果输入的堆序号存在则打印数据
- 如果不存在则执行
(*((void (__cdecl **)(char *))page + 1))(page) - 该指针可被控制
利用方法
- 利用UAF漏洞伪造指针
- 在堆上构造
system(/sh) - 具体步骤:
- 先free 0号堆块
- 再申请回来,此时0号和1号是同一个堆块
- 修改1号堆块内容
- 调用show(0)触发攻击
通用攻击技巧总结
-
栈溢出利用:
- 注意canary泄露
- 栈迁移技术
- ret2libc构造
-
堆漏洞利用:
- UAF漏洞利用
- fastbin attack
- 堆溢出修改关键数据
-
格式化字符串漏洞:
- GOT表劫持
- 函数指针修改
-
shellcode构造:
- 空间受限时的精简shellcode
- 寄存器状态分析
-
特殊技巧:
- 通过控制rbp实现任意地址写入
- 利用判断逻辑触发后门函数