2013-05-22 3 views
0

Позвольте мне сначала показать вам мой код.Шелковый код для получения оболочки, но произошел дефолт по умолчанию

char shellcode[] =  
"\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x46" 
"\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1" 
"\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68"; 


int main() 
{ 

int *ret; 
ret = (int *)&ret + 2; 
(*ret) = (int)shellcode; 
} 

это оболочка-скандинавской Шеллкод, код приходит от book-- «руководство shellcoder в» .И просто скопировать код в книге, и он был скомпилирован с GCC (GCC shellcode.c -о shellcode). И моя версия gcc - 4.7.2, моя машина - X86, но я запускаю ее на debian, я просто получаю ошибку сегментации.

выход readelf -l является:

Elf file type is EXEC (Executable file) 
Entry point 0x80482f0 
There are 8 program headers, starting at offset 52 

Program Headers: 
    Type   Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align 
    PHDR   0x000034 0x08048034 0x08048034 0x00100 0x00100 R E 0x4 
    INTERP   0x000134 0x08048134 0x08048134 0x00013 0x00013 R 0x1 
     [Requesting program interpreter: /lib/ld-linux.so.2] 
    LOAD   0x000000 0x08048000 0x08048000 0x0050c 0x0050c R E 0x1000 
    LOAD   0x00050c 0x0804950c 0x0804950c 0x00134 0x00138 RW 0x1000 
    DYNAMIC  0x000518 0x08049518 0x08049518 0x000f0 0x000f0 RW 0x4 
    NOTE   0x000148 0x08048148 0x08048148 0x00044 0x00044 R 0x4 
    GNU_EH_FRAME 0x000490 0x08048490 0x08048490 0x0001c 0x0001c R 0x4 
    GNU_STACK  0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4 

Section to Segment mapping: 
    Segment Sections... 
    00  
    01  .interp 
    02  .interp .note.ABI-tag .note.gnu.build-id .hash .gnu.hash .dynsym .dynstr    .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame 
    03  .init_array .fini_array .jcr .dynamic .got .got.plt .data .bss 
    04  .dynamic 
    05  .note.ABI-tag .note.gnu.build-id 
    06  .eh_frame_hdr 
    07  

все в порядке, достаточно ли этого?

ответ

1

Вы пытаетесь выполнить код, расположенный в стеке, но ваш стек не является исполняемым.

GNU_STACK  0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4 

Вы Defintely хотите связать с помощью -z execstack переключатель. И просто чтобы быть уверенным, отключить защиту стека вручную во время компиляции: -fno стек-протектор

Вы окончательный НКУ командной строки должно быть:

gcc -fno-stack-protector -z execstack shellcode.c -o shellcode 

PS: Вы можете прочитать ССАГПЗ man, эти флаги довольно хорошо документированы.

+0

извините, мой английский настолько плох, может быть, я не выразил это ясно. – tony

+0

Хорошо, позвольте мне дать вам больше информации. – tony

+0

ОК, позвольте мне дать вам больше информации. Код отправляется из книги - «справочник shellcoder» .i просто скопируйте код в книге и скомпилируйте его с помощью gcc.and, это shellcrowing shellcode, но i запустите его на моем debian, я просто получаю ошибку сегментации. – tony

Смежные вопросы