xdsec2013线下赛之FtpServer.exe溢出分析

来源:互联网 发布:android sdk linux 编辑:程序博客网 时间:2024/04/30 03:08

西电线下赛,和小伙伴们玩得很开心,认识很多大牛,现在将线下赛的一些题目回来重新分析一遍。

首先打开ftpserver.exe

和其它的ftp服务器差不多,也就是说基本的命令都是有的,现在问题的是程序在执行哪条命令时会崩溃,fuzzing 发现程序执行ls AAA....(512个)时程序崩溃,

用OD打开,ctrl+n 查看输入表,查找与溢出相关的函数


发现有strcpy函数,到相对应的地址处先断点


其实密码PASS字段也有溢出点,但是长度只有0x70个字节,反向连接shellcode长度肯定是不够的。

跟踪发现第一个是LIST 函数后面的参数的复制,跟进去看看


dst的字符串大小为200h,即512个字节,现在用python编写一个socket程序,发送512个A,观察堆栈情况:


因此我们只要再多加8个字节,覆盖掉返回地址为shellcode首地址就好了


strcpy之后,eax是指向shellcode首地址,因此我们可以利用jmp eax的方法跳转到shellcode执行,但是结果却不是这么的简单,

下面有个CString的析构函数,执行后将eax的值改变了,因此无法利用jmp eax的方法,但是观察堆栈,发现在返回地址下面也存有指向AAAAA....

的指针,不如我们把返回地址写个retn的指令地址就好了。

buffer = "LIST "buffer += "A" * 512buffer += "b" * 4buffer += "\x98\x4F\x99\x7C" #返回地址buffer += "\r\n"s.send(buffer)print s.recv(1024)

但是发现还是不行,后面加了个"\x00"多覆盖了后面的一个字节,所以决定找个低地址的指令吧,


最后成功了,选择了ftpserver内部的一个地址,上图可以看出来,然后将AAAA....替换成reverse_tcp就好了,

用msfpayload 生成一个,然后用msfencode -b '\x00' 去除\x00字节就好了,因为接收的是CString对象,

最后给出结果图


大牛勿喷,第一次写博客,本人小白一个,仅仅是记录下一些比赛的经历

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 用手机号办的移动宽带到期了怎么办 联通忘了宽带的用户名和密码怎么办 宽带联通移机附近没有端口怎么办 电信卡怎么改服务密码忘记了怎么办 路由器重置宽带账号密码忘了怎么办 重置路由器后不知道宽带密码怎么办 欠费后重新缴费宽带连接不了怎么办 华硕路由器忘记账号密码忘了怎么办 光纤猫光信号闪红灯不能上网怎么办 被传销洗了脑的人怎么办 辞职了评职称年度考核表怎么办 我是饭店饭店欠供货商的钱多怎么办 mac电脑ps卡住了点不了怎么办 高考自愿民族栏要改为民族怎么办 法院拆消裁定后再审有错怎么办 重定向语句前面有文件路劲怎么办 您上传的图片大小超过3M怎么办 两个人打架被拍视频上传了怎么办 小米手机打开后一直出现英文怎么办 百度云分享文件含有违规内容怎么办 百度网盘下载说本地空间不足怎么办 绘声绘影X9将滤镜拖到视频怎么办 苹果手机中间的按钮没用了怎么办? 图片怎么发的在百度里面应该怎么办 学java刚看的视频就忘了怎么办 qq上传照片一直显示排队中怎么办 微信支付不小心重复付款怎么办 学习通上传视频时 文件过大怎么办 电脑死机了怎么办 也不能关机了 还没发货淘宝退款卖家不处理怎么办 还没发货申请退款卖家不处理怎么办 快递写错电话被更改收货信息怎么办 货在派送中快递地址填错了怎么办 老板损坏了你保管的器材怎么办 闲鱼买家说不合适要退货怎么办 日本邮便局的单号我忘了怎么办 小米盒子自带播放器被删除了怎么办 在电视上装了央视影音要升级怎么办 用现金支付货款没有了证据怎么办 楚楚街不发货客服不理人怎么办 厨房那面墙借用别人的怎么办