這題算是很基本的 pwn
但是可能因為中間有點小陷阱
所以解出來的人不多 (?
連到目標環境後會印出一堆歌詞 (?
輸入 n 就離開程式,不然會在印一次歌詞
...
Drink all the booze
Hack all the thingsReplay?(y/n)
檢查程式以後
程式有故意留下的 backdoor
只要 input 符合條件
就會跳轉到 buf 執行 shellcode
行為如下:
- 判斷 input 第一個字是否為 'n' or 'N',是則終止程式
- 將 input 與
<baidu-rocks,froM-china-with-love>
做 xor 加密 - 如果 xor 後前面 10 byte == 'n0b4CKd00r' 就轉到 buf + 1
所以我們要計算 n0b4CKd00r
+ shellcode
xor 後的值
但是陷阱在於 scanf 讀到某些字元就會終止 ex: \x00
導致 shellcode 沒有完全被載入
還好這題沒有對 shell code 長度做限制
可以靠塞 nop 調整 shellcode 的 offset 來避開特殊字元
接著就發現 /home/ctf/flag.txt
底下有答案了
flag: BCTF{H4v3-4-n1C3-pWn1ng-f3sT1v4l!!}