[問題] 請教

看板C_and_CPP (C/C++)作者 (胖胖)時間13年前 (2012/11/18 23:26), 11年前編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/2 (看更多)
#include <stdio.h> char shellcode[] = "\xb0\x01\x31\xdb\xcd\x80"; typedef void (*FUNCPTR)(); int main() { printf("<< Shellcode 開始執行 >>\n"); FUNCPTR fp = (FUNCPTR)shellcode; fp(); } 運作環境是Ubuntu 12.10 想說先弄一個最簡單的範例 , 只有exit的功能 但執行時一直出現記憶體區段錯誤 不知道是什麼原因 上網查了一下 利用gcc編譯時也加上了-z execstack 還是一樣 請問有人知道原因嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.218.6.70

11/18 23:28, , 1F
DEP, OS或CPU可以禁止執行 code sec 以外的 op code
11/18 23:28, 1F

11/18 23:29, , 2F
先用 memalign 要一段 page 再用 mprotect 改權限即可
11/18 23:29, 2F

11/19 00:56, , 3F
我猜應該是你用的shell的問題,找舊一點的shell
11/19 00:56, 3F

11/19 02:25, , 4F
如果懶得使用動態配置 + 改 page 屬性,可以在
11/19 02:25, 4F

11/19 02:26, , 5F
char shellcode[] 和 = 之間加上這個
11/19 02:26, 5F

11/19 02:27, , 6F
__attribute__ ((section (".text#")))
11/19 02:27, 6F

11/19 02:28, , 7F
指定把這陣列放到 .text section,而那一般預設就是你其
11/19 02:28, 7F

11/19 02:29, , 8F
他可執行程式所放置的 section,編出執行檔後可用 nm觀察
11/19 02:29, 8F

11/19 10:24, , 9F
gcc 再加個 -m32 看看?
11/19 10:24, 9F
※ 編輯: a613204 (1.171.202.205), 07/28/2014 19:04:18
文章代碼(AID): #1GgFutnL (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GgFutnL (C_and_CPP)