CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6

Crackeme6 write up(help me)

0x01

为了照顾水平技术差异化,本题解答对大神来说,有些繁琐。(大神可以忽略飘过)

方便一部分逆向新手学习。

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第1张图片


0x02

命令行行程序上图显示崩溃,刚开始还怀疑程序编写的有问题。

于是先暂时用IDA载入测试一下。

找到输出位置

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第2张图片

注意到输出位置特殊。往下看貌似后面还有输出

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第3张图片

注意此段代码好像是花指令

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第4张图片

可以忽略不管。

往下继续查看发现类似有恭喜字符串,可能答案在附近。

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第5张图片

注意查找字符串,可以测试提交一下flag

测试几次之后发现答案均无效,于是继续读函数处理代码。

选测试图菜单,进入图模式,在菜单查看一下函数调用流程图

 

 

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第6张图片


看到最左侧函数输出使用OutputDebugStringA函数。其中输出之前进行了十六进制格式化字符串。“%2X”关键字符。在这之上有个用户处理函数sub_401200。采用F5伪代码编译模式查看。

进行快速处理。(前面其实也可以直接采用快捷键F5模式直接快速处理,大神忽略飘过)

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第7张图片

是系统字符串处理函数。

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第8张图片

到这里,还有字符串处理,异或算法,分之比较。可以看看

测试输出的十六进制会不会是flag结果。

rev3rs3_ana1ys1s

循环每个字节

异或0x09

 

==>7B6C7F3A7B7A3A5668676838707A387A

测试成功。

0x03 

Ida使用工具自动静态分析,在不运行的情况下绕过了崩溃,难度降低。

采用odbg那么题目将会加大难度,其中有三个异常退出函数。

必须进行人工修复,否则一直处于无法继续调试状态。

而且必须保持返回值不能被修改。

修复好运行开启debugview直接接收显示的答案。

CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6_第9张图片

后面具体就不细说了。类似。


下载地址

下载地址


你可能感兴趣的:(安全札记,逆向工程,反汇编,二进制,技术文章)