Curious
思路和解法
下載 chal
之後,從題目的提示可以知道有一些資料有寫在 Data Segment,如果這些資料是預先就設定好的話,必定是有存在 chal
中。如果資料是字串的話,可以用 strings
掃出來。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
這邊就可以拿到第一段 flag,而且發現這個 binary 裡面有 "/bin/sh"
這個字串
接著把 chal
拿去 gdb
跑,輸入 start
之後可以看到將要執行的 instruction 和當前的 register
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
可以推論當執行到 syscall
時,rax, rdi, rsi, rdx = 0, 0, rsp, 0x80
,去翻一下 syscall table 就可以知道這是要從標準輸入讀 0x80 到 rsp
上。因為 syscall
後直接接 ret
這個 instruction,所以猜測可以使用 ROP。
使用 ROPgadget
看看有什麼 Gadget 可以用
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
發現改 rax, rdi, rsi, rdx
的 Gadget 都有,也有 syscall
,加上 chal
沒有 PIE(用 checksec
可以知道),用 ROPgadget --binary ./chal --string "/bin/sh"
找到 "/bin/sh"
的位址後,直接寫一個最簡單的 ROP Chain 就完成了。
Solve Script :