美文网首页
pwn伪造一个假栈getshell,难道不想了解一下吗?

pwn伪造一个假栈getshell,难道不想了解一下吗?

作者: anything都不会 | 来源:发表于2019-09-28 23:36 被阅读0次

首先,我感谢每一位在我学习路上帮助我的每一个人。

谢谢你们。

进入正题,今天带领大家看一个比较有趣的一个exploit。

这个exp的目的是展示伪造栈的技术,也就是自定义一个新栈,我认为挺有趣的。

这个思路也是我的一位帅气的硕士学长告诉我的,我来分享给大家。

首先,题目链接在此:https://pan.baidu.com/s/1GEpaUWTb9zCukCgg4bDxWg

密码:dfkh

首先,我们运行一下该程序

我们可以看到,应该是需要输入一些东西,我随便打了写字符,回车,出现hello,world。

可以初步得出,应该存在栈溢出的漏洞,我们checksec一下。

32位,没有任何的保护。

拉入IDA查看。

main函数伪C代码

里面两个很简单的函数,进入第一个发现栈溢出漏洞。

很简单吧,但是在这里要介绍一种伪造栈的方法。

看上面的exp,

由于什么保护都未开启,所以栈上的数据是可执行的。

好,接下来我们分析这个exploit。

这个实际上是shellcode,理解吧。

第一个ret,让我们在ida看一看在什么位置。

大家注意到没有?很容易理解吧.

接下来的ebp就是我们要创建伪造栈的栈底。是0x804a010

可以看到,上面地址上是这些个玩意。

我们分析这个payload

前面的都不做重点讲解了,重点是标注箭头的部分。

第一个红箭头指向的其实就是我们要伪造栈的栈底,第二个红箭头指向的目的是为了使EIP指向ret=0x804841f地址,执行。

其作用会在接下来跟进讲解。

相信大家也注意到了,该exp有两个interactive,所以,运行时也需要特殊一点,即当第一次interactive时按下ctrl+c中断一下,目的是为了不让第二次发送的payload被错误的认为是第一次发送的payload的后续(这里要感谢我的贾学长,表达我深深的谢意。)

目前为止,我们已经简单分析了exp的构造,接下来,我们要步步跟进,深入探讨。

当我们debug时,如下图,可以看到已经发送了payload

我们在gdb里查看一下栈是否发送到位,如下图

可以看到,已经成功发送。我们继续。

当执行到上面那一步后,堆栈情况是这样的。

寄存器情况是这样的。

注意,再次执行下一条指令leave后,观察堆栈和EBP

我们发现,EBP已经成为我们预想的伪造栈的栈底了。

而下一个pop也是按我们预期的指向。

这里插入一个对leave指令讲解

好,我们继续执行下去观察

了解leave后,当第二次,即ctrl+c后执行到leave后,我们看一看前后EBP和ESP变化。

我们发现,我们定义了一个新的栈给了这个进程。

我们再看栈中保存的数据,

实际上到这里,伪造栈的技术也就讲完了,当然,伪造栈这个说法只是我个人创造的而已,但是也挺新奇的对我来说,当我第一次看到时,心里确实很惊讶,原因是原来栈还可以这么玩。

关于该exp怎么getshell不是我要讲的重点,相信大家也很容易理解其原因。

原创不易,点个赞吧,

欢迎转载,转载标注。

相关文章

  • pwn伪造一个假栈getshell,难道不想了解一下吗?

    首先,我感谢每一位在我学习路上帮助我的每一个人。 谢谢你们。 进入正题,今天带领大家看一个比较有趣的一个explo...

  • [new bugku] pwn

    最简单的pwn nc然后cat flag pwn3 64位栈溢出,程序有后门,栈溢出然后return到后门即可 p...

  • IDA插件keypatch初体验

    我们用一个简单的栈溢出程序做实验进入IDA发现程序存在getshell函数

  • Int 0x80 ROP链(x86)

    2017年湖湘杯的一道pwn题 2017 湖湘杯 pwn300 用memcpy把堆中数据向栈上写的时候造成栈溢出 ...

  • 栈溢出简易指南

    栈 pwn 主题: 基本栈溢出 针对缓存区溢出防护的对策 shellcode 栈溢出的最终目的是执行shellco...

  • 堆栈基础(一)

    新手入门pwn之栈溢出系列,先学习堆栈的基础,函数调用栈这些. 运行时栈 运行时栈(runtime stack)是...

  • 2018-11-14

    妈妈能有什么错呢?难道她要跪下来求你,这样才好玩吗?难道她不想生在一个知书达理的家庭吗?难道她不想有个老公疼吗?难...

  • 2018-11-07东南A5翼舞 4.99万起即可接受预订!

    除了超低的价格之外 难道你真的不想了解一下 东南翼舞到底带来了怎样超值的5心关爱护航吗? Show Time! 原...

  • pwn write_up 合集

    一、bugkuctf pwn4(栈,ROP,system($0)) 图1很容易看出来read函数栈溢出 紧接着就是...

  • pwn真的入门了

    终于沉下心来好好的把ctf-wiki上的pwn部分看了一下(当然菜鸡的我海之看懂了栈) 首先需要补充一下aslr ...

网友评论

      本文标题:pwn伪造一个假栈getshell,难道不想了解一下吗?

      本文链接:https://www.haomeiwen.com/subject/apfweqtx.html