Я учусь создавать свои собственные шелл-коды, следуя примерам из учебника Grey Hat Hacking . Они привели примеры выполнения шеллкодов в 32-битных Linux системах, но когда я собрал их в своей системе с соответствующими флагами (возможно, я мог ошибаться в этой части), я не получил ожидаемых результатов.
Имя моего исполняемого файла шелл-кода: sc2
.
section .text
global _start
_start:
xor eax, eax
mov al, 0x46
xor ebx, ebx
xor ecx, ecx
int 0x80
xor eax, eax
push eax
push 0x68732f2f
push 0x6e692f2f
mov ebx, esp
push eax
push ebx
mov ecx, esp
xor edx, edx
mov al, 0xb
int 0x80
# nasm -f elf sc2.asm -o sc2.o
# ld -m elf_i386 sc2.o -o sc2
# ./sc2
segmentation fault
# objdump -M intel -d ./sc2
./sc2: file format elf32-i386
Disassembly of section .text:
08049000 <_start>:
8049000: 31 c0 xor eax,eax
8049002: b0 46 mov al,0x46
8049004: 31 db xor ebx,ebx
8049006: 31 c9 xor ecx,ecx
8049008: cd 80 int 0x80
804900a: 31 c0 xor eax,eax
804900c: 50 push eax
804900d: 68 2f 2f 73 68 push 0x68732f2f
8049012: 68 2f 2f 69 6e push 0x6e692f2f
8049017: 89 e3 mov ebx,esp
8049019: 50 push eax
804901a: 53 push ebx
804901b: 89 e1 mov ecx,esp
804901d: 31 d2 xor edx,edx
804901f: b0 0b mov al,0xb
8049021: cd 80 int 0x80
# gdb -q ./sc2
Reading symbols from ./sc2...
(No debugging symbols found in ./sc2)
(gdb) r
Starting program: sc2
Program received signal SIGSEGV, Segmentation fault.
0x08049023 in ?? ()
Я думаю, что из того, что я могу собрать, код был выполнен, но он дает ошибку по сегменту без предоставления оболочки. Чего мне не хватает?
(Детали моей системы: у меня 64-битная Kali Linux)