前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一次与缓冲区溢出的亲密接触

一次与缓冲区溢出的亲密接触

作者头像
FB客服
发布2018-07-30 16:55:30
6200
发布2018-07-30 16:55:30
举报
文章被收录于专栏:FreeBuf

起因

这是一个简单的缓冲区溢出的漏洞,今天没事,来分析一下看看他溢出的原因,最后通过平衡堆栈的方式,让目标程序执行shellcode使程序不crash。只是用来研究和学习。

测试软件名称及版本

FTPShell Client 5.24

下载地址:

https://pan.baidu.com/s/1IHOfx0IQQOpuTs55f-T-aQ

密码:qvo4

用到的工具

  • IDA 6.8
  • winxp sp3 32位虚拟机

测试漏洞

1、起一个ftp服务器,打开21端口。 2、等待客户端连接后,向客户方发送PWD的数据 3、ftp客户端收到服务器发送的PWD数据后,会crash

服务器给客户端发送的数据:

远程注入代码前后的流程图对比:

分析漏洞的位置:

这个call的主要功能键就是读取服务器发送来的数据到buffer

程序分配栈的大小

进入read_server_string_to_buffer这个call,我们看看分配栈的大小为0x408

溢出的位置

没有做长度限制,这个地方只要大于0x408个字符,就会把堆栈覆盖

读取成功和失败的返回值

eax = 0,读取成功

eax = 1,读取失败

这里我们需要保持读取成功的状态才可以

crash点

target_eip

我在这里用的是user32.dll,地址为:0x77d4e56b 你可以根据自己的系统自己选择kernel32.dll或者其他

加入shellcode

由于这是在没有开启dep保护的情况下进行的测试攻击,所以自己写的代码是可以直接在堆栈运行的。 如果在dep保护模式下进行攻击的话,shellcode的代码就需要通过rop链来进行维护,然后运行。 这里我使用msfvenom -p windows/shell_bind_tcp LPORT=8848 -f c 生成shellcode,等待连接端口

运行server,然后用ftp连接,是客户端程序crash了。

连接目标机器

  • 然后使用nmap 扫描目标机器,发现目标机器8848端口已经打开,
  • 用nc连接进入了一个consle窗口

crash

做事要有始有终,虽然程序crash了,但是我们不需要让程序crash,要不然就被用户知道了,就会更新版本,或者重装软件,所以我们的宗旨是让用户快乐的用这带后门的程序。

分析crash的原因

因为栈的数据被覆盖程序crash

修复堆栈,防止程序crash

由于返回地址被覆盖,所以我们需要修复堆栈,让程序可以找到自己的返回位置,那么程序就不会crash了,在shellcode代码运行完成后,我们加入以下平衡堆栈的代码,就不会crash了

再次测试,运行完自己的shellcode,后门已经开了,程序依然还在运行,收工 :)

*本文作者:yearnwang,转载请注明来自FreeBuf.COM

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 起因
  • 测试软件名称及版本
  • 用到的工具
  • 测试漏洞
    • 服务器给客户端发送的数据:
      • 远程注入代码前后的流程图对比:
        • 分析漏洞的位置:
          • 程序分配栈的大小
            • 溢出的位置
              • 读取成功和失败的返回值
                • crash点
                  • target_eip
                    • 加入shellcode
                      • 连接目标机器
                      • crash
                        • 分析crash的原因
                          • 修复堆栈,防止程序crash
                          相关产品与服务
                          云服务器
                          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档