码迷,mamicode.com
首页 > 其他好文 > 详细

【CTF】Reverse CSC2015 120

时间:2015-04-24 06:37:38      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

来源: Cyber Security Challenge 2015

题目:Crackme

类型: Reverse

分数: 120

难度:中(难中易三个级别)

描述: We found this binary, but we lost the password. Please retrieve it for us.

题目链接:https://github.com/ctfs/write-ups-2015/tree/master/cyber-security-challenge-2015/reverse-engineering/reverse-that-binary

答案: TnVrZSB0aGUgV2hhbGVz

?

?

?

解题思路:

看一下文件格式,linux 64位的程序

技术分享

放到IDA里面找到main函数,可作出如下的分析,1.需要带参数运行程序 2.参数长度为20

技术分享

通过分析汇编代码可以发现ida分析const_return函数少了一个参数。

接下来我们可以分析出整个程序的框架:

将输入字符串转化为bit

按照预定的长度从后往前取出并换算成int

调用const_return进行校验

通过校验则输出flag

?

因为const_return里面调用的函数较多,逐个分析过于麻烦,这里可以通过编写so库来调用const_return函数,从而知道对于不同的输入可以获得对应返回值

技术分享

从这里我们可以依次获取被调用的12个函数的地址,因此可以编写如下的inject.c文件

技术分享

将inject.c 编译成inject.so

技术分享

通过设置LD_PRELOAD让Crackme加载inject.so库

技术分享

Crackme执行了我们的init函数并成功输出了满足条件的值。考虑到字符串中01的个数比,这里我们选取最大的值来计算flag,python脚本如下

技术分享

运行即可得到flag

技术分享

?

?

@Reference Bluecake

@Reference https://github.com/ctfs/write-ups-2015/tree/master/cyber-security-challenge-2015/reverse-engineering/reverse-that-binary

?

【CTF】Reverse CSC2015 120

标签:

原文地址:http://www.cnblogs.com/windcarp/p/4452286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!