2016-CSAW-CTF-Key

前言

今天也是做了两题,但是做的第一题实在是没有什么收获,就不记录了。2019的DDCTF做了前两题windows的逆向,后面就全不会了。今天拿到一个第三题的WP,仔细看了一下,是个虚拟机的题目,虚拟机的指令处理跟之前遇到的十分相似,但是是Objectv-C写的,还没有动态调试的条件。查了许多都是要Mac下Xcode自带的lldb来调试…我也不确定。先搁置了,记录下这道题。也算是有意思

分析

拿到题目拖到IDA里可以正常打开,说明没壳。先用OD跑一下看看。发现直接显示

我都没输入什么东西就直接结束程序,显示如图字符串。惊了…难道没有交互吗。在IDA里 shift+F12查看字符串。

发现这里有一个flag.txt文件,交叉引用到该函数

发现这里会有一个文件打开,尝试在该路径下创建一个flag.txt,里面任意放一些数据"111111",再次运行,没有whathappend字符了,出现了wronkey字样。说明交互就是该txt文件了。
在这里插入图片描述
跟进main函数

在这里有一个if,明显里面是一个check函数,正确与否就看该函数的返回值。使用OD跟进到这里,检查该函数的参数。

可以看到此时有一个陌生字符串与flag.txt里的字符。在来到check函数时,111111并未被做任何处理。F7跟进该函数继续观看

这里有一个CMP,6是flag.txt里的字符串数量,0x12就是程序要求的字符数量了。将flag.txt修改为18个"1"再次来到该处。

此时刚刚好,后面再跟进有一个cmp,将flag.txt里的字符串与某字符串对比,查看该字符串。发现就是check函数的参数之一:之前的那个陌生字符串。
在这里插入图片描述
将flag.txt里的内容修改为该字符串。即可通过验证。

总结

这个程序的收获可能就是交互的方式,最近接触到关于一些文件处理的程序,从陌生到熟悉,慢慢增加熟练度吧。增加了一些F7跟进观看cmp的经验吧。个人感觉在面对很多逆向程序的时候,尤其是涉及一些字符串验证,F7跟进到每一个cmp,查看参与对比的数据。在输入的数据没有被处理的情况下,这样十分有用。本题就是个例子…

今日剩余计划

  1. 学习物理mooc
  2. 接手pediy-18-10

明日计划

信息安全国赛

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值