ctf-wiki之ret2text学习笔记

ret2text即执行程序中已有代码,例如程序中写有system等系统的调用函数,我们就可以利用控制已有的gadgets(以ret结尾的指令序列,通过这些指令序列,可以修改某些地址的内容)控制system函数。

这是ctf-wiki上ret2text的例子。

首先查看保护


仅仅开启了栈不可执行保护,并且位32位的程序

利用IDA查看程序


发现明显的栈溢出漏洞,gets()函数


发现secure函数中调用了system函数

所以我们可以利用gets函数的漏洞使得程序执行system()函数从而进行获取shell.

所以我们现在要知道输入多少个字符会导致栈溢出

利用脚本pattern或使用pwntools中的函数cyclic生成150个有序字符

使用pattern:

首先生成150个有序字符


生成150个有序字符

接着利用gdb调试,查看溢出点


在0x64413764发生溢出

利用pattern.py脚本自带方法,计算偏移量


计算出偏移量位112

使用pwntools自带方法cyclic:


生成150个有序字符

利用gdb调试


找到溢出点

pwntools也有自带方法计算偏移量即与cyclic相对于的cyclic -l 地址 计算偏移量


计算出偏移量112

我们已经计算出偏移量,那么可以利用栈溢出漏洞调用程序中自带system函数从而得到系统的shell


调用system函数地址0x0804863A

脚本


python脚本

运行脚本


获得系统权限
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 路由器漏洞利用 0x0 背景知识 1.MIPS指令集合 MIPS 指令集主要使用在一些嵌入式的 IOT 设备中,比...
    Nevv阅读 2,318评论 0 0
  • 最近在学蒸米的《一步一步学ROP之linux_x86篇》,内容写的很详细,个人学到了很多,但同时学的过程中也有很多...
    2mpossible阅读 1,571评论 0 5
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,008评论 0 38
  • 一个月的约定快要到了,疯狂补栈溢出知识,偷看大佬们博客,希望学到点什么。 栈溢出学习网站 CTF Wiki 栈溢出...
    杰_74阅读 563评论 0 1
  •  好久没看过pwn题目了,写一个入门的教程顺便复习了: 1. 安装gdb-peda git clone https...
    Nevv阅读 9,103评论 0 4