440 words
2 minutes
THJCC CTF Write-ups
前言
這篇會有我負責的題目的官方解答(預期解)
感覺沒甚麼人解我的題目QQ
⚾
一個棒球小遊戲,可以把關鍵的判斷 patch 掉或是直接跳到 flag()
兩種做法都蠻直觀的,當然也可以直接去逆 flag()
,比較麻煩就是了。
只要能進到 miss()
的分支就會呼叫 flag()
簡單反轉兩個條件跳轉指令就可以了
修改後再次執行即可取得 flag
Not Apple
又一個毫無新意的 Android 題目,沒啦想說出個用工具就可以秒解的題目,結果大家都卡在 flag format
jadx 反編譯可以拿到部分 flag,看提示可以知道這裡用了 string resource 的語法
找到對應的 string resource 再替換一下就拿到完整的 flag
flag-decoder
這題是一個用 upx 加殼(壓縮)的 ELF 檔案,但我有做些修改沒辦法直接脫殼
第一步就是先脫殼
upx 的特徵蠻明顯的,還有一些 IDA 的基本操作這邊就不再贅述
大概就是 IDA 跳警告之後 eip 會出現 main() 的形狀
這裡代表已經載入原始的檔案了
接下來把原始的 binary dump 出來
看起來執行結果跟加殼後一樣
脫殼成功後再次用 IDA 分析找到 main()
這邊有 anti-debug 不過直接跳過判斷就好
關鍵是在 sub_401775()
會對 flag 做解密
可以在解密後從 stack 的殘留值取得 flag
再把這裡 dump 下來
會拿到一串 0 跟 1,再到提示給的網站 拿到 QR code 掃描一下就拿到 flag 了。
THJCC CTF Write-ups
https://flydragonw.github.io/posts/thjcc_writeup/