【CTF】逆向基础2

  • ret2libc的基本原理

ret2libc是绕过DEP的一个思路,顾名思义是利用系统中已经存在的系统函数来构造对DEP的攻击,思路大概有三种,通过ZwSetInformationProcess函数将DEP关闭、通过VirtualProtect函数将shellcode所在内存设为可执行、通过VirtualAlloc函数开辟具有执行权限的空间。

  • format string利用的基本原理

format string利用基本上是为了达到一个内存任意写的目的,利用printf函数不定参数个数的参数寻址方式的漏洞,以及转换指示符%n。

  • ROP的基本原理

举一个简单例子,说明ROP构造Gadget过程,栈空间形式化表示如下:

【CTF】逆向基础2

Gadget构造过程描述:

假设攻击者打算将V1值写入V2所指向的内存空间,即Memory[V2] = V1;攻击者控制了栈空间,能够构造栈空间布局;攻击者采用间接方式,寻找等效指令实现,通过寻找Gadget指令实现;

Gadget执行过程描述:

1) 初始时,栈顶指针为ESP,所指向内容为V1,EIP=a1。2) POP操作,ESP值加4,POP相当于内存传送指令。3) POP和MOV指令执行完,CPU会继续向下顺序执行。4) RET相当于POP+JMP,所以RET操作,ESP值也会加4。

【CTF】逆向基础2

ROP利用Gadget图形示意(摘自国外一份ppt):

【CTF】逆向基础2

你可能感兴趣的:(基础)