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

2018 年 6 月 18 日 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

登录查看更多
0

相关内容

【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
专知会员服务
41+阅读 · 2020年2月20日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
【课程】伯克利2019全栈深度学习课程(附下载)
专知会员服务
56+阅读 · 2019年10月29日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
刚开始学编程?这几款小工具能让你事半功倍
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
AI算法起家的今日头条为何败给了色情?
大数据技术
4+阅读 · 2018年1月5日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Arxiv
24+阅读 · 2020年3月11日
Real-time Scalable Dense Surfel Mapping
Arxiv
5+阅读 · 2019年9月10日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关VIP内容
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
专知会员服务
41+阅读 · 2020年2月20日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
【课程】伯克利2019全栈深度学习课程(附下载)
专知会员服务
56+阅读 · 2019年10月29日
相关资讯
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
刚开始学编程?这几款小工具能让你事半功倍
Python | 爬爬爬:爬百度云,爬百度贴吧,爬爱奇艺
计算机与网络安全
3+阅读 · 2018年3月30日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
AI算法起家的今日头条为何败给了色情?
大数据技术
4+阅读 · 2018年1月5日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Top
微信扫码咨询专知VIP会员