# 10002-modohayaku ## Intro shellcode with validation on some bytes ## Deposit <!-- var_8 = i --> <!--  --> 打開程式隨便亂 key 資料發現不會 overflow,先來反編一下。 > 這裡不知為啥 IDA 沒辦法 F5 編出東西,用 Ghidra 就可以  可以發現一開始用 read 固定讀 176 個字元,不會 overflow 接下來的檢查滿有趣的: - 先看輸入有沒有任何 `\x90`(nop),有的話會嫌你太慢把你幹掉 - 再來依照以下規律檢查,若 i 代表第幾個數: - $i\ mod\ 11 == 0$ 時,該字元為 `\x0c` - $i\ mod\ 11 == 1$ 時,該字元為 `\x87` - $i\ mod\ 11 == 2$ 時,該字元為 `\x63` - 上述條件每輪檢查一次,每次三個條件需要至少完成一個,否則會說你用錯劍技一樣把你幹掉 > FAIL: >  > PASS: >  > PASS: >  如果成功通過以上檢查,系統會直接把你的輸入當 code 來跑。 意圖明顯。我們需要編制一個符合條件的 shellcode。 首先我們先找能開 bash 的 shellcode:  > https://www.exploit-db.com/shellcodes/46907 想辦法在不影響核心功能的情況下符合那些麻煩的 `no-noop`, `0c8763` 條件: 像`test` 不會動到任何 reg,只會標 flag ,就滿適合我們需求的 - 8545**63** test - 8545**87** test - a9**63636363** 這裡我用 try-and-error 慢慢試,試了一整天,真是謝謝喔我就爛。   --- ###### flag `ADL{574r8ur57_57r34m!!!https://youtu.be/jUuknk81n2w}`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up