鏈接見標(biāo)題岛都。
作為一個新新手,看到第一行的時候就開始感到詫異振峻,為什么題目會給出flag的路徑呢臼疫。
接下來看第二句,說只有open扣孟,read和write這三個系統(tǒng)調(diào)用可以用烫堤。
現(xiàn)在還是一頭霧水,那么下載下來看看吧。
有RELRO和Stack的保護鸽斟。這兩行是什么意思呢拔创?
RELRO:
RELRO會有Partial RELRO和FULL RELRO,如果開啟FULL RELRO富蓄,意味著我們無法修改got表
Stack:
如果棧中開啟Canary found伏蚊,那么就不能用直接用溢出的方法覆蓋棧中返回地址,而且要通過改寫指針與局部變量格粪、leak canary躏吊、overwrite canary的方法來繞過
from link? 作者:HacTF
用IDA打開,并F5:
邏輯大概就是帐萎,主動讀取shellcode比伏,然后主動執(zhí)行這個shellcode。
這么直接疆导?赁项?我試了試直接注入,結(jié)果失敗澈段。這時視線轉(zhuǎn)到orw__seccomp()這個函數(shù)上悠菜。我們搜索一下seccomp是什么。
seccomp 是 secure computing 的縮寫败富,其是 Linux kernel 從2.6.23版本引入的一種簡潔的 sandboxing 機制悔醋。在 Linux 系統(tǒng)里,大量的系統(tǒng)調(diào)用(system call)直接暴露給用戶態(tài)程序兽叮。但是芬骄,并不是所有的系統(tǒng)調(diào)用都被需要,而且不安全的代碼濫用系統(tǒng)調(diào)用會對系統(tǒng)造成安全威脅鹦聪。seccomp安全機制能使一個進程進入到一種“安全”運行模式账阻,該模式下的進程只能調(diào)用4種系統(tǒng)調(diào)用(system call),即 read(), write(), exit() 和 sigreturn()泽本,否則進程便會被終止淘太。
from link??作者:你身邊的那個TA
ok,現(xiàn)在我們就理解了題干的“只有open规丽,read和write這三個系統(tǒng)調(diào)用可以用蒲牧。”是為什么了嘁捷。
題目已經(jīng)給出了一個flag的路徑造成,所以我們只需要將shellcode寫成對open,read和write的調(diào)用就行了雄嚣。
那么現(xiàn)在難題又來了晒屎,這shellcode該如何調(diào)用呢喘蟆?我們之前只會復(fù)制粘貼啊鼓鲁?
不會就學(xué)霸坦臁!link
或者看別人的wp:)? link
還有個選擇骇吭,學(xué)一下pwntools的shellcraft? link
然后把shellcode注入就可以了橙弱。
flag =?FLAG{sh3llc0ding_w1th_op3n_r34d_writ3}