9月 25 BUU-[RCTF2019]DontEatMe 看下面的wsad 和那个判断 应该是一个迷宫 前边有固定随机种子生成固定的8个数字。然后第一个数字赋值为0 之后代码内容过于复杂。怀疑是某个加密或者解密 这里还🈶️对输入16进制转换 百度一下blowfish加密过程 64位就是8个字符 推测最后的走迷宫的方案长度是8的倍数 存在反调试 我直接断在调试前 然后修改EIP到调试后 然后我断在了switch 这时候所有的初始化都弄完了 可以直接dump迷宫和密匙 迷宫如下 12345678910111213141500000000011111101111111011111101111111011111101111000e0001110111101111101110111101111101110111100001101110111111101101110111111101101110000s0000110111111101111110111111100000000111111111111111111111111111111111111111111111111 由反汇编可知 出发点为 (10,5) 目的地为(4,9)需要在16步以内走完(估计就是16步 手动走一下得到路径 1ddddwwwaaawwwddd 对应前面的加密,刚好16位是8的倍数 不用padding分组blowfish加密 加密后转hex屏凑得到flag 1234567import blowfishslover = blowfish.Cipher(b"\x00\x0F\x1A\x01\x35\x3A\x3B\x20")s = slover.encrypt_block(b'ddddwwwa') + slover.encrypt_block(b'aawwwddd')flag = ''for i in s: flag += hex(i)[2:]print(flag) 上一篇 SCUCTF-re5 下一篇 z3约束器学习笔记