Título: Shellcode to HEX (BOF) Publicado por: GGZ en 26 Enero 2017, 23:48 pm Hola a todos, estoy explotando un bof necesito una ayuda.
Necesito pasar esta serie de instrucciones a hexa para luego ejecutarlo con C. Código
Quiero pasar este código asm que borra un archivo a C tipo: Código
Pero me parece que estoy pasando mal el asm al hexadecimal, ¿cómo puedo pasarlo para ejecutarlo desde C? Probé hacerlo con objdump pero no funciona. Saludos. Título: Re: ASM to HEX (BOF) Publicado por: xv0 en 28 Enero 2017, 01:52 am Por lo que veo tienes la cadena en la sección data, y estas pasando la direccion en la shellcode. Porque no colocas la misma cadena al final de la sección text:
Código
Miralo con el objdump, y copia los hex. Un saludo. Título: Re: ASM to HEX (BOF) Publicado por: GGZ en 28 Enero 2017, 04:40 am Ya está lo solucioné haciendo esto:
Código
Luego lo cargué a ebx esp. Y después lo miré con el objdump. Muchas gracias igual, me sirve para la próxima! Título: Re: ASM to HEX (BOF) Publicado por: xv0 en 28 Enero 2017, 16:35 pm Pero sabes el porque del fallo? Si desensamblas el ejecutable que creas con C y mira a que datos apunto el offset que pasas a ebx, ya que ni sera un offset valido.
Por ese motivo las shellcodes pasan path, de esa forma ya que no pueden depender de direcciones como data etc... Un saludo. Título: Re: Shellcode to HEX (BOF) Publicado por: GGZ en 28 Enero 2017, 19:42 pm Si lo aplico objdump a lo que me diste me tira esto:
Código
O sea que: 19: 68 6f 6d 65 2f push $0x2f656d6f 1e: 68 74 74 70 64 push $0x64707474 significa /home/httpd/test?, todavía no sé como armar la shellcode ahí, ¿copio todos esos hex? No lo creo. A mi me quedó todo en una función mucho más prolijo y fácil de entender. Mi shellcode quedó así: Código
Lo que tengo entendido es que cuando se crea el objeto del source, éste no guarda las variables y yo estoy desamblando el objeto por eso no tengo las variables. Saludos. Título: Re: Shellcode to HEX (BOF) Publicado por: xv0 en 28 Enero 2017, 20:49 pm ¡
Código
Lo que hay debajo del call es la cadena, cuando haces el call hace un push del offset a continuación del call, lo que significa que tienes un offset que apunta al principio de la cadena, los offset no son validos, ya que se toma como cadena, no se ejecutan. Luego el pop del ebx, carga el offset del call, puedes hacerlo con los push y luego copiar el offset que seria lo mismo, que es lo que haces. Si copia todo los obcode, nada mas, igual que lo tuya. Saludos[ |