pawnyable-04
前言本篇博客为Pawnyable第四个专题——条件竞争漏洞的利用。 题目分析本题目依旧是保护全开 12345678910111213#!/bin/shqemu-system-x86_64 \ -m 64M \ -nographic \ -kernel bzImage \ -append "console=ttyS0 loglevel=3 oops=panic panic=-1 pti=on kaslr" \ -no-reboot \ -cpu qemu64,+smap,+smep \ -smp 2 \ -monitor /dev/null \ -initrd rootfs.cpio \ -net nic,model=virtio \ -net user 分析一下vuln.ko文件,只有open和close与上一题UAF利用中的不同可以看到在open和close函数中加了一个奇怪的全局变量mutex。,同样存在UAF漏洞,但是mutex的存在让我们UAF的利用变得困难起来。这实际上是想要限制我们在...
pawnyable-03
前言本篇博客为Pawnyable第三个专题——内核堆UAF漏洞的利用。 题目分析依旧是保护全开 12345678910111213#!/bin/shqemu-system-x86_64 \ -m 64M \ -nographic \ -kernel bzImage \ -append "console=ttyS0 loglevel=3 oops=panic panic=-1 pti=on kaslr" \ -no-reboot \ -cpu qemu64,+smap,+smep \ -smp 1 \ -monitor /dev/null \ -initrd rootfs.cpio \ -net nic,model=virtio \ -net user 分析一下vuln.ko 程序整体逻辑依旧不难,这次修复了内核堆上的越界写和越界读。g_buf为open时创建,大小为1024,在close时free掉,这里存在UAF漏洞,在close之后g_buf全局变量依旧保存有内核堆的引用。 攻击思路因为UA...
pawnyable-02
前言本篇博客为Pawnyable第二个专题——内核堆溢出漏洞的利用。 题目分析这里我们直接保护全开: 12345678910111213#!/bin/shqemu-system-x86_64 \ -m 64M \ -nographic \ -kernel bzImage \ -append "console=ttyS0 loglevel=3 oops=panic panic=-1 pti=on kaslr" \ -no-reboot \ -cpu qemu64,+smap,+smep \ -smp 1 \ -monitor /dev/null \ -initrd rootfs.cpio \ -net nic,model=virtio \ -net user 直接拖出vuln.ko逆向一下看看相较于Pawnyable-01的附件仅有moudle-read和moudle-write有变化,返汇编代码如下:可以看出这里最大的变化就是删掉了关于内核栈变量的使用,读写都是在内核堆上进行的,同样也有几乎任意...
pwnyable-01
前言笔者最近在学习Linux kernel的知识,意外发现了Pawnyable这个很不错的项目,原项目链接,笔者在此整理自己学习并复现本项目的过程以及相关的思考。Pwanyable项目共有10个专题,分别介绍10种不同的内核漏洞及其利用方法,原作者为每个专题都提供了对应的带有漏洞的附件来供学习。 漏洞虚拟机环境 专题 LK01: Holstein v1 栈溢出 LK01-2: Holstein v2 堆溢出 LK01-3: Holstein v3 UAF LK01-4: Holstein v4 竞态条件 LK02: Angus NULL Pointer Dereference LK03: Dexter Double Fetch LK04: Fleckvieh 滥用userfaultfd LK04: Fleckvieh 滥用FUSE LK05: Highland 作者尚未发布 LK06: Brahman eBPF相关漏洞利用 本篇博客为第一个专题。对应内核栈溢出的漏洞专题。因为是第一个专题,笔者这里将基础的内核pwn漏洞模块调试方...
kernel-0x0
0x0-前言笔者最近一个月一直在学习Linux kernel pwn的知识,读过很多入门的教学文档和其他pwner前辈的博客,感觉目前网上的资料对新人来说上手起来还是比较困难,因此本篇博客笔者重新写一篇,旨在让Linux kernel的新人快速上手,并且有一个比较清晰的学习路线,并提供一些笔者认为对初学者很有帮助的资料。注:本篇文章默认读者具有一定的userland pwn的基础知识。 0x1-什么是kernel pwn本节旨在让读者对kernel pwn在做什么有个快速的印象和了解。有一点pwn经验的读者都熟悉userland pwn,这里被称作用户态的漏洞利用,我们的研究对象是具体有漏洞的二进制程序,在linux上即为elf程序,在攻击时,带有漏洞的二进制程序运行在靶机上,我们通过与该漏洞程序交互,通过劫持程序流等方式来改变原始程序的功能变为恶意的,比如执行一个$system(“/bin/sh”);$等。 从研究对象来看,我们的着重点在一个具体的带有漏洞的ELF程序,被攻击的是运行该程序所对应的进程,例如我们在pwntools中开出来的process。 ...
真物
强风迎面吹拂,是因为还没追上自己的心吧~ 引子从9月份开学到现在,莫名其妙地忙着莫名其妙的事情,日子过得平平,脑子里却思绪万千。 研究生读了几个月,感觉自己身心都有些体悟,正好想着自己后面要多经营经营这个blog,于是便开始码字了。 主要还是想留存记录罢,也可能依旧是一种自我满足~ 白雪之下9月份开学至今,最大的感受就是一种强烈的矛盾感,被学校看起来无穷尽的“琐事”束缚,同时在若有若无的日常中挣扎。 关于学校的课其实我早就不再是节节课必去的“好学生”,9、10月的我一边焦虑着有好多要做的事情没有推进,一边又偶尔出现在教室里面做做样子。很多个夜晚在寝室和室友闲聊时也曾讨论过,现在的生活到底是什么样的?自己该怎么做,做些什么呢? 于是,在一些个失眠的夜晚,也曾剖析自己的内心,也曾审视自己的所作所为。 结果如何呢?内心潜藏的焦虑究竟是读研所带来的对未来的迷茫,还是各个方面一次次尝试过后无法成功的不甘呢? 关于日常,总是想着要做些什么来挣脱枯燥的校园生活,做up主、玩摄影、画板绘、徒步,曾为自己挑选一件件有趣的事。然而,绝大多数都不算真正地开始就结束了… 关于课业,目前是非常抗拒的...
Careless Retention and Management-Understanding and Detecting Data Retention Denial-of-Service Vulnerabilities in Java Web Containers
Careless Retention and Management: Understanding and Detecting Data Retention Denial-of-Service Vulnerabilities in Java Web Containers论文信息 论文作者:(复旦白泽)Lian Keke; Zhang Lei; Zhao Haoran; Cao Yinzhi; Liu Yongheng; Sun Fute; Zhang Yuan; Yang Min 发表时间:2025 发表期刊/会议:USENIX 阅读时间:2025.09.01 论文内容简述文章关注DRDOS——数据保留DOS,即用户的输入被保留在长期存活不会被垃圾回收机制回收的对象中,通过多次触发,在内存中生成大量垃圾对象,最终实现对目标服务耗尽内存的攻击。 论文创新核心 提出并系统地分析了java web容器中存在的DRDOS问题,描述了这种攻击的可能性。 开发了DR.D静态分析模型,实现对具有DRDOS漏洞的web容器的检测。 发现了28个0day漏洞并全部被开发者承认。 论文重...
Towards Automatic Detection and Exploitation of Java Web Application Vulnerabilities via Concolic Execution guided by Cross-thread Object Manipulation
Towards Automatic Detection and Exploitation of Java Web Application Vulnerabilities via Concolic Execution guided by Cross-thread Object Manipulation论文信息 论文作者:(复旦白泽)Xinyou Huang1*, Lei Zhang2*, Yongheng Liu1, Peng Deng1, Yinzhi Cao3, Yuan Zhang2, and Min Yang2 发表时间:2025 发表期刊/会议:USENIX 阅读时间:2025.09.09,第二次细读记录 论文内容简述论文核心是提出了一个JAEX模型,用于实现java漏洞的自动化检测,特别是涉及跨线程数据流的漏洞,并能够自动化生成利用流程。 论文创新核心论文关注的方法部分解决了目前没啥人做过的java跨数据流安全问题,并实现了漏洞的自动化检测与利用。作者叙述了领域内其他编程语言中的跨线程数据流漏洞检测的工作,说明了其在 java 漏洞检测上的不适用性。实验部分...
2022_TQLCTF_Unbelievable_write
看一下保护 程序got表可写,无pie,libc版本为2.31,有tcache 看下main,一个菜单题,c1 c2 c3 三个选项。 初始化函数设置了ptr为一个0x10大小的堆块,为全局变量 c1函数为一个可控大小的malloc,向其读入内容之后立刻free掉,此处为与大多数题目不一样的地方,因为malloc之后立刻free,所以在tcache attack的时候需要绕过free的重重检查。 c2函数为一个可控地址的free,借助ptr,堆地址完全可控,该free可以访问到任意堆地址 c3为后门函数,检查全局变量target是否被修改,若被修改了则得到flag。 分析到这里,本challenge正如题目所描述,我们的目的是达成一次unbelievable write,即向target中写入数据。 这里给出一个非预期解,打tcache控制块tcache perthread struct,该控制块位于堆地址首部,与ptr存在固定偏移,因此我们可以利用一次free将其释放,然后通过修改tcache控制块内容实现tcache attack,达到任意地址堆块分配。则只需分配...










