[問題] asm檔產生之shellcode無法正確執行

看板C_and_CPP (C/C++)作者 (IDAHACK)時間13年前 (2012/11/01 15:54), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux Ubuntu 12.04 問題(Question): 我的問題是要把linux的system call 編號162的nanosleep轉為shellcode執行 這是我寫好的.asm程式碼 SECTION .text msg: db 2,0,0,0,0,0,0,0 global _start _start: xor eax, eax xor ebx, ebx xor ecx, ecx mov ebx, msg mov al, 0xa2 int 0x80 xor ebx, ebx xor eax, eax inc eax int 0x80 編譯過程如下 nasm -f elf -o sleep.o sleep.asm ld -o sleep sleep.o ./sleep 執行過後結果是對的 延遲2秒 但是經過objdump -d ./sleep得出的值 放入char shellcode[]卻無法執行 #include <stdio.h> char shellcode[] = { "\x02\x00\x00\x00\x00\x00\x31\xc0" "\x31\xdb\x31\xc9\xbb\x60\x80\x04" "\x08\xb0\xa2\xcd\x80\x31\xdb\x31" "\xc0\x40\xcd\x80" }; int main () { void (*fp) (void); fp = (void *) shellcode; fp(); } 有請各位大大為我解答一下 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.52.172 ※ 編輯: joybee 來自: 140.115.52.172 (11/01 15:55)

11/01 16:25, , 1F
shell code不能用elf吧,你要用bin
11/01 16:25, 1F

11/01 16:26, , 2F
而且不能用label取用變數 因為變數位址會和連結時不同
11/01 16:26, 2F

11/01 16:28, , 3F
hacking:the art of exploitation這本書寫得很詳細
11/01 16:28, 3F

11/01 17:12, , 4F
你先把你填的\x02\x00那一大串拿到ollydbg反組譯看看
11/01 17:12, 4F

11/01 19:28, , 5F
我懂了 真得是label那邊的問題
11/01 19:28, 5F

11/01 19:29, , 6F
要用call取得那邊得address才行 謝謝大大指教~~
11/01 19:29, 6F
文章代碼(AID): #1GaYgZeb (C_and_CPP)
文章代碼(AID): #1GaYgZeb (C_and_CPP)