基础理论
part 1
1、在CTF比赛中,PWN主要是指漏洞利用,也称为exploit。
2、PWN题型的解题过程一般是寻找程序中存在的漏洞,并利用该漏洞达到一定的效果,如拿到shell、获取flag等。
3、解答PWN题型的基本能力包括:程序逆向能力、漏洞查找能力、利用代码编写能力。
4、PWN题型中的漏洞类型主要可以分为栈漏洞、堆漏洞、格式化字符串漏洞、整形漏洞、逻辑漏洞等。
5、就难易程度来说,栈漏洞、格式化字符串漏洞、整形漏洞的难度要低于堆漏洞、逻辑漏洞。
6、就考察点来说,栈漏洞、堆漏洞、格式化字符串漏洞、整形漏洞偏重于基本功,逻辑漏洞则偏重于思维能力。
part 2
1、32位X86架构下汇编指令有两种格式:intel、AT&T。
- Intel:寄存器名称和数值前无符号
- AT&T:寄存器名称前加“%”,数值前加“$”
2、栈帧
- 就是一个函数执行的环境;函数参数、函数的局部变量、函数执行完后返回到哪里等等
- 每一个栈帧代表的就是一个未运行完的函数
3、下面可以通过对一个简单程序的调试,来加深对于栈帧的了解,同时熟悉对于gdb的基本使用
//源码
//hello.c
#include <stdio.h>
int test(int a,int b)
{
int c = a + b;
return c;
}
int main(int argc, char const *argv[])
{
test(1,2);
}
使用如下命令编译.c文件