Logo WP

Doraemon

小叮当你在哪#

小叮当藏起来了,你能找到他吗?

出题人:@ShowMaker

文件{:download="Dora.zip"}

第一层#

解压之后有仨文件,

  • Doraemon1
  • Doraemon2
  • Doraemon4

一个一个扔进DIE,发现 Doraemon4 是 Windows x64 可执行文件

执行一次,提示 No Such File,扔进 IDA 静态+动态分析,发现是把 Doraemon3 RC4 加密到 Doraemon1

考虑到 RC4 是对称加密,只要再跑一次程序就可以解密出 Doraemon3

但是本程序在 RC4 的过程中,还会随机插入垃圾数据

srand(keystream[v8 % 512]);
v9 = rand() % 4;
for ( i = 0; i < v9; ++i )
{
    v5 = rand();
    fputc(v5 % 256, v7);
}

但是这里的随机种子是根据密钥流定的,也就是固定的,所以只要把 fputc(v5 % 256, v7) 改成 fgetc(Stream) 即可

mov     rdx, [rbp+230h+var_208] ; Stream
mov     ecx, eax        ; Character
call    cs:fputc

改成

mov     rcx, [rbp+230h+Stream] ; Stream
nop                     ; Stream
nop
call    cs:fgetc

然后重命名 Doraemon1Doraemon3 ,运行一次程序,即可解密出 Doraemon3

第二层#

扔进 DIE,发现又是个可执行文件,运行一下

你是来找谁的呀
<输入字符串+回车>
小叮当就在在 .\Here,去找到他吧~

IDA静态分析了一下,是对 Doraemon2 加/解密之后放进 Here,以输入的字符串作为密钥

我是来找 Doraemon 的,输入 Doraemon ,把输出的 Here 扔进 DIE, 是个 GIF 图片

![[DoraIsHere.gif]]