摘要: 感觉这个是比较古老(2020 左右的)用法了,看看即可? 概念 userfaultfd 可以类比成一个缺页异常的 handler,如果 handler 可以处理很久,那可能更好达到竞争的效果 工作流程 参考 Kernel Pwn Syscall userfaultfd and Syscall set 阅读全文
posted @ 2024-12-20 10:16 giacomo捏 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目给了的附件有 player.cpio run.sh zImage 。原始固件可以从 Synology Archive Download Site - Index of /download/Firmware/Camera/BC500下载。 概况的分析 如何获取终端 ? 如果直接模拟固件,终端会被报 阅读全文
posted @ 2024-12-19 13:13 giacomo捏 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 感觉就像是 toctou?先检查后使用? static long module_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { if (verify_request((void*)arg)) return -EINVAL 阅读全文
posted @ 2024-12-13 16:18 giacomo捏 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 现在把基础的和 user mode 类似的部分看完了,该看内核独有的攻击咯。 概念 攻击的前提条件 为了完成 null ptr dereference,需要先禁用 SMAP(内核从用户态读写数据) 以及 cat /proc/sys/vm/mmap_min_addr 需要是 0。mmap 需要可以拿到 阅读全文
posted @ 2024-12-13 16:17 giacomo捏 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 漏洞点在于,open 的时候 mutex 的检查和设置不是原子操作。 static int module_open(struct inode *inode, struct file *file) { printk(KERN_INFO "module_open called\n"); if (mute 阅读全文
posted @ 2024-12-08 21:10 giacomo捏 阅读(6) 评论(0) 推荐(0) 编辑
摘要: kernel heap 结构 slab 的结构虽然之前看过了好多,但是现在再看还是感觉有点迷糊。大概是 slab 上的块是没有 metadata 的,但是释放的时候和使用的时候状态不同,释放的时候会存指针。不过既然 kernel 修改链表指针的操作不像 ptmalloc 这么多,那就不太细看了( t 阅读全文
posted @ 2024-12-05 09:27 giacomo捏 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 2024 网鼎杯半决赛 pwn 题 cardmaster。 结构体可以恢复成这个样子: 00000000 struct card_set // sizeof=0x28 00000000 { 00000000 __int32 count; 00000004 __int32 digit_range; 0 阅读全文
posted @ 2024-11-27 19:58 giacomo捏 阅读(63) 评论(0) 推荐(0) 编辑
摘要: PAWNYABLE 中的第一节 stack overflow 的学习笔记。( 觉得这个教程好细致,而且封面好可爱... 这一节讨论内核的栈溢出,分成了不同防护程度的情况来讨论不同的情况下面,攻击应该如何进行。 基本的思路 在 module_write 里面,copy_from_user 的大小是用户 阅读全文
posted @ 2024-11-27 15:38 giacomo捏 阅读(7) 评论(0) 推荐(0) 编辑
摘要: setup 准备工作 void unshare_setup() { char edit[0x100]; int tmp_fd; // from lib pthread unshare(CLONE_NEWNS | CLONE_NEWUSER | CLONE_NEWNET); // from lib f 阅读全文
posted @ 2024-11-19 20:44 giacomo捏 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 一个 tee 入门题 阅读全文
posted @ 2024-05-10 18:56 giacomo捏 阅读(26) 评论(0) 推荐(0) 编辑