题目逻辑 UAF,没有show功能 取而代之的是提供了heap和libc地址的12-15位,也就是从main_arena到stdout时要爆破的那一位 既然如此,第一步一定是任意地址分配到stdout上修改stdout泄漏 泄漏地址之后就可以用tcache任意地址写了 存在sandbox,过滤了open,openat,openat2,需要使用io_…
有人拜托来看看题,那就来看看解最少的 I Have No Syscalls And I Must Scream(题目名字挺长) 题目逻辑 题目逻辑很简单 flag通过argv被传入程序中,并且strcpy到了一块随机地址的mmap区域上,拷贝成功后清理所有的痕迹 然后就是一个sandbox下的shellcode执行 注意这里唯一的白名单syscal…
被拿捏了,这哪里是Pwn,全是逆向,彻底的劣势区间 baby_heap 一个比较明显的largebin attack,以及一些其他gift功能,清空了_IO_wfile_jumps所在的一整PAGE 但是在前面的_IO_wfile_jumps_mmap虚表还在,还是能打house of apple from pwn import* r=remote…
又到了我最喜欢的一年一度的网安奥运会、雇佣兵大战、抓PY时间 叠个甲:打完之后拿的复现题,未加入任何队伍,所有题目均没有测试过远程 青龙组 Pwn04 首先需要输入用户名和密码,显然不存在什么\x00绕过,在长度未知的情况下直接爆破显然不是很合理 但是注意到一点,假设用户名为abcd,当我们输入ab\x00时,内容检查会正常返回0,因此最终返回的会…
模块逻辑非常简单,kernel版本5.4.272,smap smep开启,未开启freelist_random 一次free的机会,write功能可使用uffd阻塞导致uaf kmalloc的大小为0x2e0,直接返回了kmalloc的地址,没有泄漏功能 0x2e0的大小很显然就是经典的ptmx 地址泄漏 使用msg_msg结构体进行泄漏,uaf修…
附件见ctftime unfree 简单的常规堆 from pwn import* r=remote("unfree.ctfz.zone",17171) #r=process('./unfree') context.log_level='debug' def new(idx,size,content): r.recvuntil("Exit\n") …
闲来无事打个比赛,ctftime上随便挑的一个 Raiser from pwn import* r=process(["./sc_Linux_x86_64","nopsctf-3e1fa45a9b0d-raiser-1.chals.io"]) #r=process('./raiser') context.log_level='debug' …
note 漏洞分析 未开启PIE,Partial RELRO,菜单堆功能完整 可以看出所有功能的idx是有符号整型,没有判断负值 也就是说对于new功能而言,每一次新建会在0x4040A0 + idx * 0x10处赋值分配的chunk_size,以及在0x4040A0 + idx * 0x10 + 0x8处分配chunk_ptr 那么很常见的思路…
前置问题 参考: https://kagehutatsu.com/?p=909 出这道题本质上是对n1sub这题的思考和拓展,更加关注USMA的更加通用行的攻击路径 漏洞分析 源码如下,漏洞点为一个kmalloc-32上的一个向低地址方向的28位的溢出 没有kfree也没有show功能,因此泄漏部分可能需要依赖其他结构体,并且有自旋锁,无法条件竞争…
跟去年鹏城杯一样还是全是常规用户态题目,以及多到做不完的总题量 silent 使用magic_gadget将stdout修改为syscall_ret,实测偏移固定为0x241b05 0x00000000004007e8 : add dword ptr [rbp - 0x3d], ebx ; nop dword ptr [rax + rax] ; r…