Dat wat jij hierboven beschrijft is de assembly code, de
shellcode kan je krijgen door deze code te compileren met bv
nasm.
Daar had ik trouwens nog een vraagje over.
Want heb dat gedoe omgezet na nasm met :
---------------------------------------
section .text
global _start:
label_one:
jmp label_three
label_two:
pop esi
mov eax,1
mov ebx,0
int 0x80
label_three:
call label_two
shellcode db "/bin/sh"
---------------------------------------
Dat gecompilerd met nams en gedugged met gdb.
Dan zegt die
(gdb) disas _start
dump of assembler code for function label one:
0x80480 (label_one): Jmp 0x8048092 (label_three)
End of assembler dump.
(gdb)x/s 0x8048092
0x80488092 (label_three) : "eiyyy/bin/sh"< address 0x80489e out of
bounds"
Betekend dat 0x80489e het adress is van /bin/sh? Want als ik dat stukje
code compiler uit dat artikel zonder exit aan te roepen. Geeft die:
(gdb) r
starting program /home/asm/a.out
program recieved signal SIGINT , Interrupt .
0x08048086 in label_three ()
(gdb) x/s 0x8048086
0x8048086 (label_three): "euyyy/bin/sh"
En dan is die in een keer niet adress out of bounds.