您现在的位置: Tracy‘Blog > 博客 > 黑人黑事 > 正文
CCTF 初赛re、pwn、misc

本来想写cctf背后的故事,但发现。。。太难写了,也没多少时间写。于是,就写下自己出的那几题的初衷和思路吧,看看是否合看管您的胃口。

RE1、RE2小学弟出的题目。本来全是win下能跑的exe,因为怕大家用IDA F5直接看源码,就只编译成了debug版,对于这点,我没有认证过,反正拿到cpp后,我就想做些事,对,不让你调试,就把re1在cygwin环境编译了一下。大概意思就是考考大家静态功底。RE2想了想,觉得也不能放到win下,就在linux x64的环境下编译给大家玩。其实,这两题,思路大概都差不多,因为不是我出的,所以,也不清楚出题人的心思。

RE3,嗯,大家都说有点坑,最后也就CUIT的小伙伴靠着非主流的做法拿下了这题。怎么说呢,提示也给的相当清楚了。先说说我怎么出的题目吧,是的,我自己也没有完整的加解密源码,给你们的程序中的解密功能其实是从Netkeeper中脱下来的汇编代码,我内联编译让其实现的,原本的目的是想看看有没有大神能还原出其加密算法的。所以,这第一种解法就是,去逆向算法,把我给你的那句“解密程序在你磁盘上”给加密回去,得到一个48字节的文件,算他的MD5值就是flag了。这第二种做法,就是非主流的做法,根据我给你的提示,你去用Netkeeper,用户名输入我给你的那句话,然后~~~~去Netkeeper目录下找Credit,里面有加密好的数据~~~的确,单说算法的话,在所有的re中,这题是最难的。

RE4,相信好多人下载题目后,都没能看到其界面吧。其实是酱紫的,某天突然要Croot给我写个集各种反调试与一身的程序,后来他就给了我一个demo,说实话,我自己都没测试,只是拿着工程项目改了改,做了些手脚。程序一启动,便有三个地方连续检测是否存在调试工具,如果有,就退出程序。但我把第二个检测的地方改成了,如果没有调试工具,就退出程序。这也是为啥大家没看到界面了。为什么要加反调试呢,我本意是,让编译出来的exe放到ida去分析的时候会让人想吐,有无穷个函数,你要找到认证的地方和真正的算法部分会有一定的难度。不过,后来我自己看了看,其实,re4还是可以通过一些特定的api和string去找到算法部分。如果让你调试的话,你会很快通过api断点找到算法部分,直接逆向算法得到flag。恩,这是第四题,想锻炼锻炼大家如何绕过反调试。或者,如何更快的静态分析找到算法。

RE5,其实,这题是去年就出好了的,本来是想作为RE1的。后来丢给小学弟去玩,他给出一个结论是,没人会做~~~这不急急忙忙就要比赛了,就把它当re5放上去了。我不知道是先前大神都没做题还是因为我的提示,大家开始纷纷把这题给干掉的。我的初衷之一其实是想让大家知道aeskeyfinder和aes-finder,这两工具都能找到aeskey,但问题也来了,aeskeyfinder并没有考虑到大小端的问题,aes-finder考虑了大小端,但他只对进程做搜索。这就需要把两个程序接合起来,所以,一个考点,或者解法就是,想看看大家临时开发、改代码的能力。初衷之二,也是这题的第二种解法,想让大家知道volatility这么一个对内存分析的工具。它能做的事情太多了,比如从内存中直接提取AES.exe然后,本地逆向就行了。这个AES.exe写的很简单的,相信做出这道题的,大概也都看了我里面留给大家的几句话。


PWN:说实话,PWN我并没有去测试过,因为,题目出的十分十分简单,就是来给大家当教科书用的,而且编译并没有加任何安全机制~可,似乎答题率也不高~~

PWN100(linux):灰常灰常简单地栈溢出,覆盖retn,跳到shellcode~~~

PWN100(win):小学弟出的,因为我没弄清楚win下写桩程序的方法,就让大家本地测试去了。也是灰常简单的栈溢出,不过,据说有一定的shellcode长度限制,我没测,小学弟测过。

PWN200(shellcode):这尼玛送分题目都没人来做,我直接执行你传过来的shellcode,当然,这里面有bug,就是我写限制条件的时候,本来是当出现0x0a 0x09等字符的时候都让shellcode[i]=0xff的,可手抖写成了shellcode[i]==0xff。于是,这题是送分的,然后发现后,就把shellcode长度做了限制,不能是msf生成的47那个。但实际上,后来收到了一个25byte的shellcode。

PWN300:格式化字符串,怕大家找不到地址,还故意给了两次printf的机会。

PWN400:其实看着挺绕的,或许,跟着罗辑走,你会想去覆盖len,然后再让长整形i溢出。哥,我故意加了个sleep 2,估计你两天内让长整形溢出是没办法了。所以这题就和PWN1一模一样,教科书版简单的栈溢出~~~~


MISC:

misc90:本来还想坑一点的,看考虑到就90分,于是,找个url生成二维码,用matlab处理成txt给大家了,url后面的事情,不是我做的。不要打我~~~

misc400:其实,这题最不坑了。就是考考大家对数据的敏感程度。对文件格式类型的认识。RicterZ萌萌的把我的磁盘当引导分区加载后,让我想起了去年BCTF的某一道题。然后想着,对哈,当时为嘛不写个引导项放里面,单纯的引导进去就行了~~~所以,这题嘛,简单说下就是。bmp后面是一个exe,exe是一个自解压,能解压出rar,rar是加密的,需要算先前单个bmp的MD5值,也就是你要把非bmp的去掉,解压后得到一个vhd文件(虚拟磁盘),然后里面有个被删除了的flag.png就是答案了。


好吧,写完了,不知道大家玩的开不开心~~~


——Tracy_梓朋

2015年04月27日11:06:47


发表评论(2)
1楼 Gaea  发表于  2015-5-21 15:22:30
所以网盘地址呢~~~ 求一份、谢了
2楼 XXX  发表于  2015-5-4 22:09:53
有官方writeup吗?
[博主回复]  额。。。似乎有,没放出来~~~ 在群里,我要他们传网盘吧
姓名 *
电子邮件
QQ
评论内容 *
验证码 *图片看不清?点击重新得到验证码请输入图片后链接字符‘a’