type
status
date
slug
summary
tags
category
icon
password
这个比赛我打的是社会组,pwn题一共来说应该是3道,一道heap,一道内核,一道arm,这里主要就heap写一下,其他题不会。
 
这道题,我这里写成两种,一道就是社会组的题,没有libc,要进行泄露,也可以直接选择爆破,另一道是其他组的,给了libc,加了一个沙箱。
 

没有libc

这里如果遇到这类题,是可以通过文件,知道其大版本的,不过小版本还是要泄露。
可以使用如下命令进行
结果如下
 
像这里就可以通过Ubuntu 8.4.0-3ubuntu2 判断出这个程序用的是glibc2.31的程序不过具体的小版本不清楚。
 
这道题逻辑的话比较简单,有个uaf漏洞,不过申请的chunk大小在0x100以内,free和edit只能修改前5个chunk。
 
这道题的话是可以修改got表的东西,于是就可以直接修改这里。
 
流程比较简单,申请3个chunk,free使其进入tcachebins中,修改其中指向下一个chunk的fd指针为,got表free函数的地址。申请出来,修改free函数的地址为system函数的地址,向chunk中写入/bin/sh ,直接free那个chunk,这里我选择直接修改,然后直接爆破。
 
这里先给一个爆破的脚本,
 
这个脚本,本地能打通,但远程不知能不能。理论上可以。
 
 
这里再给一个泄露的脚本,原理基本一样,修改free函数为程序中的write函数,然后泄露其他函数的got表地址,判断libc的小版本。
 

加沙箱

基本一样,加了个沙箱,这里我选择直接泄露environ 函数里的栈地址,向栈上写入ROP,或者提权,执行shellcode,
 
CVE-2024-7436复现不同libc版本heap技巧
Loading...
wgiegie
wgiegie
一个苦逼的ctf干饭人🍚
公告
🎉NotionNext 4.5已经上线🎉
-- 感谢您的支持 ---
👏欢迎更新体验👏