170629 Pwn-XCTF决赛的Pwn视频分析

1625-5 王子昂 总结《2017年6月29日》 【连续第270天总结】

A. XCTF总决赛 Pwn

B. 看二进制指导的时候误打误撞看了一个Pwn的视频writeup,不过技术原理上与逆向相同的,区别只在于Pwn主要对程序的反编译来找到程序的漏洞(如栈溢出、逻辑BUG等)从而获取隐藏的flag,而Reverse是拆解理解程序的功能来获得flag

本题比较简单,是通过栈溢出的漏洞;环境为Linux

首先实现File命令来查看该文件的属性:64位ELF

直接运行,发现毫无输出退出;使用strace来输出该程序所调用的API,发现它试图打开了/home/flag-robot/flag文件

那么在该位置touch一个flag文件即可

再次运行,显示文字,表示需要输入指令

此时前期准备就无法继续了,需要使用IDA进行静态反编译---由于竞赛文件已无处可寻,I春秋提供的实验环境中的IDA无法进行F5反编译,因此无法亲手操作了

大体上思路为分析源码,寻找可利用的漏洞

本文件先声明了三个数组dest、shadow和stack_cookie,每次接收三个数字作为指令,当满足一定条件时可以触发不同的指令

一共有三个漏洞:

首先是char overflow 当一个变量为char型时,当它的值发生溢出时将会变为负值。因此若将其作为数组的下标加数将会导致向前查看;不过由于溢出不可能得到-64,因此实际上是有位置的数据取不到的,此时可能需要查找该数据的来源

第二个漏洞是stack memory leak。与上个漏洞类似,但是当下标不可为负值时,如果程序可以递归调用那么此时栈堆中将会出现两次程序内存空间。此时令下标足够大时,可以读取到外层的程序内存

第三个漏洞,stack memory write。当对堆栈写入时如果发生溢出,那么将可以修改函数返回地址。此时可以寻找内存中的system函数和参数地址,来print所需要的flag

C. 明日计划

i春秋逆向简介

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值