第一、准备环节-增加内核调试辅助语句:
首先,为了更好的查看关键因素的变化:稍微做了两处修改:
第一处:splice前后,增加getchar和puts;
第二处:prepare
pipe过程中,增加getchar和puts;
修改后代码执行结果如下:
下面内容重点关注程序运行启动之后,该漏洞利用的两个关键要素:prepare_pipe函数、splice函数的内核态分析,此外对只读的suid文件的写入进行分析。
第二、关键因素-prepare_pipe函数的内核调试
这里的prepare_pipe函数有两个环节:第一个环节是write循环,第二个环节是read循环。
在第一个环节中,当程序执行到prepare_pipe函数中write循环,这里的内核态重点是关注flag信息,此时执行状态如下:
对应的内核态执行内容:

本文详细介绍了如何使用Gdb调试复现Dirty Pipe漏洞(CVE-2022-0847),重点分析了关键的prepare_pipe函数和splice函数在内核态的行为。通过设置断点,观察flags变化,揭示了漏洞利用过程中的page赋值和写入suid文件的内存页。文章提供了完整的学习路线和资源,适合网络安全工程师深入研究。
最低0.47元/天 解锁文章
1357

被折叠的 条评论
为什么被折叠?



