Flydragon's Blog
440 words
2 minutes
THJCC CTF Write-ups

visitor badge

前言#

這篇會有我負責的題目的官方解答(預期解)

題目原始碼和解題人數

感覺沒甚麼人解我的題目QQ

一個棒球小遊戲,可以把關鍵的判斷 patch 掉或是直接跳到 flag()
兩種做法都蠻直觀的,當然也可以直接去逆 flag(),比較麻煩就是了。 img

只要能進到 miss() 的分支就會呼叫 flag()
簡單反轉兩個條件跳轉指令就可以了
img

修改後再次執行即可取得 flag
img

Not Apple#

又一個毫無新意的 Android 題目,沒啦想說出個用工具就可以秒解的題目,結果大家都卡在 flag format

jadx 反編譯可以拿到部分 flag,看提示可以知道這裡用了 string resource 的語法 img

找到對應的 string resource 再替換一下就拿到完整的 flag img

flag-decoder#

這題是一個用 upx 加殼(壓縮)的 ELF 檔案,但我有做些修改沒辦法直接脫殼

第一步就是先脫殼
upx 的特徵蠻明顯的,還有一些 IDA 的基本操作這邊就不再贅述 img

大概就是 IDA 跳警告之後 eip 會出現 main() 的形狀
這裡代表已經載入原始的檔案了
img

接下來把原始的 binary dump 出來
img

看起來執行結果跟加殼後一樣
脫殼成功後再次用 IDA 分析找到 main() img

這邊有 anti-debug 不過直接跳過判斷就好
img

關鍵是在 sub_401775() 會對 flag 做解密
可以在解密後從 stack 的殘留值取得 flag
img img

再把這裡 dump 下來 img

會拿到一串 0 跟 1,再到提示給的網站 拿到 QR code 掃描一下就拿到 flag 了。 alt text

THJCC CTF Write-ups
https://flydragonw.github.io/posts/thjcc_writeup/
Author
FlyDragon
Published at
2024-05-06