<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pwn101 on 南行's Blog</title><link>https://nanhang.top/categories/pwn101/</link><description>Recent content in Pwn101 on 南行's Blog</description><generator>Hugo -- 0.152.2</generator><language>zh</language><copyright>©2025 南行&amp;rsquo;s Blog</copyright><lastBuildDate>Tue, 12 May 2026 23:30:38 +0000</lastBuildDate><atom:link href="https://nanhang.top/categories/pwn101/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux Kernel ret2dir</title><link>https://nanhang.top/posts/pwn/ret2dir/</link><pubDate>Tue, 12 May 2026 23:30:38 +0000</pubDate><guid>https://nanhang.top/posts/pwn/ret2dir/</guid><description>&lt;h2 id="简介"&gt;简介&lt;/h2&gt;
&lt;p&gt;ret2dir 是哥伦比亚大学网络安全实验室在 2014 年 USENIX 发表的论文提出的一种攻击手法，主要是用来绕过 smep、smap 等保护。&lt;/p&gt;
&lt;p&gt;在 smep 和 smap 保护没有出现以前，常用的内核利用手法是 ret2usr，其核心在于在修复指针使其指向用户空间，并在用户空间布置 payload。但是 smep 和 smap 出现之后，内核态无法访问或执行用户态的代码或者数据，导致了该方法的失效。而 ret2dir 正是针对 smep 和 smap 保护都开启的情况下，让内核态仍然能够隐式访问用户态的数据。&lt;/p&gt;</description></item><item><title>Linux Kernel UAF</title><link>https://nanhang.top/posts/pwn/uaf/</link><pubDate>Tue, 12 May 2026 23:30:38 +0000</pubDate><guid>https://nanhang.top/posts/pwn/uaf/</guid><description>&lt;h2 id="内存管理基础"&gt;内存管理基础&lt;/h2&gt;
&lt;p&gt;Linux kernel 将内存分为 &lt;code&gt;页→区→节点&lt;/code&gt; 三级结构，主要有两个内存管理器：&lt;code&gt;buddy system&lt;/code&gt;与&lt;code&gt;slab allocator&lt;/code&gt;，前者负责以内存页为粒度管理所有可用的物理内存，后者则向前者请求内存页并划分为多个较小的对象（object）以进行细粒度的内存管理。&lt;/p&gt;</description></item><item><title>Arbitrary-Address Allocation</title><link>https://nanhang.top/posts/pwn/freelist-hijack/</link><pubDate>Fri, 17 Apr 2026 21:30:38 +0000</pubDate><guid>https://nanhang.top/posts/pwn/freelist-hijack/</guid><description>&lt;p&gt;此利用方法与用户态 glibc 中分配 fake chunk 后覆写 &lt;code&gt;__free_hook&lt;/code&gt; 这样的手法类似，不过是基于内核 slub 分配器的。&lt;/p&gt;
&lt;p&gt;slub 分配器会将释放后的 object 链接到&lt;code&gt;kmem_cache_cpu&lt;/code&gt;的&lt;code&gt;freelist&lt;/code&gt;指针后。&lt;code&gt;freelist&lt;/code&gt;指针存储第一个空闲 object 的地址，第一个空闲 object 的起始地址的前 8 个字节存储下一个空闲对象的地址。&lt;/p&gt;</description></item><item><title>Linux Kernel modprobe_path覆盖利用技术</title><link>https://nanhang.top/posts/pwn/modprobe_path/</link><pubDate>Thu, 01 Jan 2026 13:03:38 +0000</pubDate><guid>https://nanhang.top/posts/pwn/modprobe_path/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;今年的 ccb&amp;amp;ciscn 初赛有一道 Linux 内核的 Pwn 题，让我这个内核菜鸡被直接“硬控”了。现在初赛都上内核了。。。&lt;/p&gt;
&lt;p&gt;赛后搞到了 WP，于是正好趁着元旦假期有时间好好复现一下，分析了一下这道题的利用技术的原理，于是就有了这篇文章。&lt;/p&gt;</description></item><item><title>Linux Kernel Pwn 入门</title><link>https://nanhang.top/posts/pwn/base/</link><pubDate>Sun, 30 Nov 2025 23:30:38 +0000</pubDate><guid>https://nanhang.top/posts/pwn/base/</guid><description>&lt;h2 id="基础知识"&gt;基础知识&lt;/h2&gt;
&lt;h3 id="内核是什么"&gt;内核是什么？&lt;/h3&gt;
&lt;p&gt;操作系统内核是一个特殊的程序，其用来管理软件发起的 IO 请求，将其转换为指令交由 CPU 执行，是现代操作系统最基本的部分。&lt;/p&gt;
&lt;p&gt;其功能主要有以下两点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;控制并与硬件进行交互；&lt;/li&gt;
&lt;li&gt;提供应用能运行的环境。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;intel CPU 将 CPU 的特权级别分为 4 个级别：Ring 0、Ring 1、Ring 2、Ring 3。&lt;/p&gt;</description></item></channel></rss>