2023 NCTF Pwn题目x1key官方Writeup
前置问题 参考: https://kagehutatsu.com/?p=909 出这道题本质上是对n1sub这题的思考和拓展,更加关注USMA的更加通用行的攻击路径 漏洞分析 源码如下,漏洞点为一个kmalloc-32上的一个向低地址方向的28位的溢出 没有kfree也没有show功能,因此泄漏部分可能需要依赖其他结构体,并且有自旋锁,无法条件竞争…
x86_64 Linux Kernel 内存管理研究
环境采用qemu-system+gdb,x86_64架构 通过qemu提供的-s接口调试linux kernel 通过gdb attach qemu进程实现访问物理内存 首先还是官方文档里的linux kernel memory map(https://elixir.bootlin.com/linux/latest/source/Documenta…
2023 鹏城杯 Pwn 部分Writeup
跟去年鹏城杯一样还是全是常规用户态题目,以及多到做不完的总题量 silent 使用magic_gadget将stdout修改为syscall_ret,实测偏移固定为0x241b05 0x00000000004007e8 : add dword ptr [rbp - 0x3d], ebx ; nop dword ptr [rax + rax] ; r…
io_uring 指针数组与4K菜单堆
新建 函数调用链 模板 int io_uring_setup() { struct io_uring_params params; struct io_uring_sqe *sqe; struct io_uring_cqe *cqe; memset(&params, 0, sizeof(params)); int ring_fd = sys…
从2023 N1CTF Pwn n1sub来看USMA攻击手法
拿了个三血,芜湖起飞 希望以后的kernel题提供wget上传功能,减少通过shell传static exp的痛苦 漏洞分析 内核版本 version 6.1.58 (chuj@pwn-host.nixos) SLAB_FREELIST_RANDOM 未开启 SLAB_FREELIST_HARDENED 未开启 CONFIG_MEMCG 未开启 模…
2023 BlackHat MEA Qualification CTF Pwn Writeup
没听说过的国外赛,总共就两题pwn 题目虽然简单,但是漏洞点还是很少见的 Profile employ.age部分存在整型溢出,可以溢出修改后方employ.name指针 任意地址写,写got表,把free修改为main地址达到多次循环写,然后配合后面的exit,再把free写为system 注意控制字节数,避免在getline末尾触发reallo…
2023 祥云杯总决赛 部分Writeup
是谁第一天AWDP五道题修了四道只做了一道,被第一甩下2w5的分差 是谁第二天CTF七道题就做了一道,中午就给自己下班 这些都在祥云杯摆烂大舞台,意外的拿了个第五 ahead 一个常见的菜单堆,但是最关键的malloc和free函数被重写了,漏洞点是简单的UAF,未开启pie,没有show功能 实际malloc和free被加了非常多的花指令混淆,具…
2023 羊城杯 Pwn Writeup
你根本不在WACON,你在哪( heap 一个很少见的多线程glibc堆题,既然是多线程,那么大概率是条件竞争 在edit功能中中有一个sleep(1) alloc功能包含一个0x10的index_chunk和0x4F到0x68的data_chunk 由于是2.35版本的glibc,有fd异或保护,fd并不是实际的内存地址,因此直接edit条件竞争…
从ImaginaryCTF2023一道Kernel题到struct task_struct的遍历
漏洞分析 内核版本 version 5.19.0-43-generic 模块分析 非常简单明了的漏洞点 device_ioctl提供任意地址读取,并且由于使用copy_to_user,可以直接搜索内存空间 而device_write提供了一个内核栈溢出 漏洞利用 泄漏地址 暴力搜索 遍历0xffffffff81000000到0xffffffffff…
2023 RealworldCTF 体验赛 部分WP
捅了天枢一晚上屁股也没捅到( 太久没打ctf了,手感冰凉,思路混乱( 正赛?问就是太难了不会做( Digging into Kernel 3 一个任意size的uaf,不限制uaf的次数,并且没有打开slab_freelist_hardened 既然没有打开slab_freelist_hardened,那么double_free的任意地址写就是可行…