-
-
[原创][CTF]DASCTF六月部分逆向题
-
发表于:
2020-6-26 22:08
8448
-
64位elf文件加了upx壳,脱壳后载入ida中发现伪代码不好看,就直接看汇编。就三个检查函数。
chk1:可以看到,只要知道栈中rbp-20h的内容即可。这里直接看或者动调都简单。
chk2:与ch1同理。
chk3:与上同理。
最后将得到的数据结合起来即可:c92bb6a5a6c3009124566d882d4bc7ee
64位elf文件,载入ida中看一下,知道是迷宫题,所以目标是明确的。
可以知道刚开始列和行都是0,下面找迷宫图。先随便看一个操作函数。
查看byte_400AE0:把数据提取出来。
用C语言将图打印出来。
由于0和O不易区别,自己把0换成了1。最后从1绕过O走到#即可。jkkjjhjjkjjkkkuukukkuuhhhuukkkk 再md5加密一下。
没看见题目的提示,在找密码的时候所有情况试的。。。
32位PE文件,首先打开看了下, 提示输入一个密码,然后验证。ida中看看。
接着看下面:
用限制条件写爆破试试:
可以看到,情况是不唯一的,不然开始就会是Nep了。先接着往下看看:
开始找重写的sub_403000()函数。先得到key[14]的所有情况:
因为是成对的,将之前的得到的不唯一的key,指定位置换成这3对字符。然后载入OD,依次试一下,发现当Ox与oX都会报错,而_h正常执行。得到此时的程序状态后dump出来。
将dump出的文件,载入ida看一下重写的函数的功能。
因为没看题目提示,使用之前找key[14]的办法,所有情况解出后看key怎么顺眼。最后得到:Nep{mircle_and_maho_is_not_free}
其实题目给了格式的提示。。。
再记录下ida中v35[i] = ......语句的地址,进入OD中下断点,然后输入正确的key,得到最终flag:
64位elf文件,运行看一下,直接让输入flag然后验证。
还是载入ida:
进入v4 = sub_55FE07F79864(a4, (__int64)&v8):
接着看下面:
上面标黄的是整个题的关键函数,进入:
ida动调提取出数据表:
最后exp:
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-8-21 09:35
被BIX编辑
,原因: