### 本册不教 C 语言
你可能翻开过 C 语言教材,第一章是 hello world,第二章是变量,一直学到数百页才碰到 socket。
本册不是这样。本册不教你写程序,教你看懂程序在干什么。
* 你在靶场里执行 `system("id")`,为什么能执行?
* 你上传的程序,为什么能调用操作系统?
* 你看到的反弹 shell,为什么能把标准输入输出交出去?
* 你看到的 `disable_functions`,到底在禁什么?
这些问题的答案,全在 C 里面。但不是 C 的语法,是 C 的能力。
### 什么叫 C 的 “能力”
C 语言提供了一套能力,这套能力叫系统调用。创建进程(`fork`)、执行程序(`execve`)、网络通信(`socket`)、文件读写(`open/read/write`)、内存映射(`mmap`)、身份切换(`setuid`)。
PHP、Python、Java、Go、Node.js,所有这些语言底层都是调这套 C 能力。多数命令执行问题,终点都落到这一层。本册只讲能力在系统调用与内核层面的来路,不展开语言语法教学。
###