今天同樣做 pwnable.tw 的題目,第二題 orw。
先確認一下檔案類型跟記憶體保護機制,
發現同樣是 x86 並且有開啟 Canary。
用 IDA 打開
我們可以看到他先執行一個叫 orw_seccomp 的函數,接著我們可以輸入一段 shellcode 讓他執行。
在 Linux kernel 中有個特性稱為 seccomp 模式,他是一種沙箱環境。在 seccomp 這種模式下的 peocess 使用的 system call 被做限制,只能使用 read()、write()、exit() 和 sigreturn(),避免 system call 的濫用造的安全疑慮。
而在這題中,點開 orw_seccomp
可以看到他使用了 prctl 去時做這個沙箱機制。prctl 是 Linux 的 system call ,用於設定 process 的資源限制、訊號處理方式等。
我們能透過 seccomp-tools 此工具確認那些 system call 並限制了。
可以發現能用的只有幾個,其中比較方便利用的為 open、read、write。
接下來我們要想辦法構造一個不用調用 execve 或直接調用 system call 但能得知 flag 的 payload
下一篇文章將會接續說明