[Re] DontEatMe - mf xp0int Posted on May 20 2019 ### 分析流程 1. 生成8个种子固定的"随机数”,并处理(后面分析可知是blowfish的初始化) 2. 输入flag,并进行hex转换。 3. 用blowfish进行解密。 4. 初始化一个迷宫(初始位置为11行6列) 5. 使用解密后的结果作为迷宫的输入 6. 如果走到结束则正确(结束位置为5行10列,只能走16步) ### 解答方法 用peid查一下,可知有blowfish的特征值,且分析程序发现是ECB模式。 手动走一下迷宫,结果为`ddddwwwaaawwwddd`,使用blowfish进行加密就是输入结果。 ### 脚本 ```python ''' 1111111111111111 1000000000111111 1011111110111111 1011111110111111 101111000e000111 1011110111110111 1011110111110111 1011110000110111 1011111110110111 1011111110110111 10000s0000110111 1111101111110111 1111100000000111 1111111111111111 1111111111111111 1111111111111111 ''' # ddddwwwaaawwwddd import blowfish cipher = blowfish.Cipher(b"\x00\x0F\x1A\x01\x35\x3A\x3B\x20") step = cipher.encrypt_block(b'ddddwwwa') + cipher.encrypt_block(b'aawwwddd') flag = '' for x in step: flag += hex(x)[2:] print("RCTF{%s}" % flag) ``` 打赏还是打残,这是个问题 赏 Wechat Pay Alipay [Misc] draw - Donek1 [Pwn] manynotes - cpt.shao
没有帐号? 立即注册