這一題如果光看 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}