Shellcode實際是一段代碼(也能夠是填充數據),是用來發送到服務器利用特定漏洞的代碼,通常能夠獲取權限。另外,Shellcode通常是做爲數據發送給受攻擊服務器的。 Shellcode是溢出程序和蠕蟲病毒的核心,提到它天然就會和漏洞聯想在一塊兒shell
Linux中兩種基本構造攻擊buf的方法:
retaddr+nop+shellcode
,nop+shellcode+retaddr
,緩衝區小就就把shellcode放後邊,否則就放前邊。服務器
Bof攻擊防護技術網絡
安裝execstack
dom
設置堆棧可執行,並查詢堆棧是否可執行,以便shellcode在堆棧上能夠執行
spa
關閉地址隨機化,more /proc/sys/kernel/randomizevaspace
用來查詢地址隨機化是開啓狀態仍是關閉狀態,2
表示開啓,0
表示關閉。
3d
構造payload
,採用nop+shellcode+retaddr
方式(\x4\x3\x2\x1
將覆蓋到堆棧上的返回地址的位置,須要將它改成shellcode的地址)
調試
新打開一個terminal,注入攻擊buf
code
用attach追蹤
blog
(在次步驟切記另外一個注入buf的進程不能按回車,否則./5238pwn1sc的進程不能出來)進程
此時發現0x080484ae ret 就跳到咱們覆蓋的retaddr那個地方了
設置斷點後,在另外一個終端按下回車,並尋找返回地址,看到01020304表示返回地址的位置是0xffffd31c,shellcode就緊挨着這個地址,加四字節爲0xffffd320
退出gdb,按照anything+retaddr+nops+shellcode
修改input_shellcode
以下
很幸運,get it~