0x00 pwn介绍
PWN是指二进制漏洞的发掘和利用,CTF中PWN题目一般出现在linux平台上
0x01 pwn所需的基础知识
- c语言
- 汇编语言
- Python
- 操作系统基础
- linux基本命令
寄存器
IP/EIP/RIP:指向当前的命令地址
SP/ESP/RSP:指向栈的顶部
BP/EBP/RBP:指向栈的底部
栈
一种后进先出的数据结构,用于调用函数过程中回复寄存器的状态。
大端与小端模式
以0x12345678为例(从左到右代表地址从低到高)
- 小端 \x78\x56\x34\x12
- 大端 \x12\x34\x56\x78
大端模式:PowerPC、IBM、Sun、大部分网络协议
小端模式:X86、DEC
0x02 栈溢出
栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致栈中与其相邻的变量的值被改变。这种问题是一种特定的缓冲区溢出漏洞。
发生栈溢出的基本前提是:
- 程序必须向栈上写入数据
- 写入的数据大小没有被良好地控制