學習來源:https://www.youtube.com/watch?v=cqwT6XCc0zg&t=332s
Writeup 網址:https://kazma.tw/2024/02/19/HITCON-CTF-2023-Full-Chain-The-Blade-Writeup/#0x2-Reverse-Engineering
將題目下載後,命名為 blade,並執行,先隨意輸入一個內容,可以發現列出了3個可執行的指令:help
, server
, exit
當我們輸入 server
後,表示切換為伺服器模式
第一行 [!] SYS_socket and SYS_connect should be allowed
表示環境裡用到了 socket 系統呼叫(socket、connect),若當前環境有開啟 Seccomp 過濾,則這兩個 syscall 必須允許,否則 shellcode 無法建立連線
Core Commands,可執行以下指令:
options
→ 列出可以設定的參數(例如 IP、Port)set <option> <value>
→ 設定某個參數run
→ 啟動伺服器、注入 shellcodeclose
→ 關閉伺服器back
→ 返回上層嘗試執行 run
表示將十六進位形式的 shellcode 丟到「victim server」上執行
可使用 disassembler 將此段 shellcode 反編譯成組合語言,得出以下行為:
socket()
建立 TCP socketconnect()
嘗試連到某個 IP + Port(這裡是 127.0.0.1:4444
)[*] Waiting for connection on 127.0.0.1:4444
表示伺服器端正在 監聽 (listen) 這個 port,等 shellcode 執行後「回連」上來。
這就是典型的 reverse shell 行為:受害者執行 shellcode → 連回攻擊者主機 → 攻擊者獲得控制