ret2text

现在开始记录ROP里的几种攻击方式,首先是最简单的ret2text.他其实可以不用记录,但是他引发的意义其实比本身重要。
这里以一道ret2text为例
image
image
这里有一个明显的栈溢出的漏洞,就是gets函数。总所周知,gets函数一个最大的漏洞就是无限输入。那么,为什么无限输入会有栈溢出呢。首先我们要知道,栈是一个有限空间,如果输入过多,自然就会有溢出的情况。而输入的话,是谁操作呢?是我们,我们可以控制输入是什么东西,自然也可以通过控制我们的输入,去改变程序的运行,去达到我们想要的攻击效果。
现在我们想想一个很重要的东西,如何达到一个攻击效果,就目前而言,我们的攻击目标就是获得一个shell,也就是命令解释器。当我们获得了一个shell也就意味对方服务器上可以解释我们也就是用户的命令。这样就代表我们有攻击成功。目前我们获取一个shell,就目前而言,我们的攻击想要得到shell,就是用system函数去输入一个'/bin/sh'字符串。这里记住就好了,本质原因可以看linux里的文件分级,各种目录,可能会更容易理解一点
好,简单了解一下栈溢出,那么什么是ret2text,text就是文本,在这里,其实就是在我们得到的文件中,有满足我们所需要的所有东西,比如system比如/bin/sh。
image
这里可以看到这张图上这个函数里面很贴心的就是给了你一个system(“/bin/sh”),什么都给,这个就是ret2text的特点,所以这道题思路就是溢出然后覆盖上这个get_shell的地址,就好了

点击查看代码
from pwn import *
io=process("./ret2text")
bd=0x8048522
payload='a'*20+p32(bd)
io.sendline(payload)
io.interactive()
posted @ 2022-05-08 16:16  REPWNER  阅读(22)  评论(0)    收藏  举报