这一题如果光看 disassembly 会非常痛苦
如果有 IDA Decompiler 会轻松许多
整个判断过程翻译回 C 大概是这样:
https://gist.github.com/L4ys/5b53d094f3ac66825a9e7afca30a258b
你看到的部分只是第一个 check,而总共必须通过 51 次 check
这题考的是如何利用 constraint solver 去推算出符合条件的 input
最简单的方法是透过 z3 (https://github.com/Z3Prover/z3) 来求解
附上我比赛时写的 solution:
https://gist.github.com/L4ys/9d4af3f76add2eb111a9c5623ef8f67b
FLAG: CTF{0The1Quick2Brown3Fox4Jumped5Over6The7Lazy8Fox9}