Título: Shellcode direcciones Publicado por: xv0 en 8 Diciembre 2012, 09:29 am Hola
Estoy creando una shellcode para que desactive pf, y tengo el siguiente problema. Código
No presenta ninguna segmentation fault así que la tracé. Código: 11277 l CALL execve(0x7f7fffff6960,0x7f7fffff6948,0) Al cargar la dirección de pfctl, solo copia en el registro rdi 0x62732f2f "//sb" no entiendo porque no carga la dirección completa. Un saludo. Título: Re: Shellcode direcciones Publicado por: xv0 en 11 Diciembre 2012, 16:07 pm Hice una de /bin/sh y funciona.
Código
La dirección es de 64bits, por eso la puedo copiar a rax, pero que pasa cuando es mayor como la de arriba por que no funcionan los push? Un saludo. Título: Re: Shellcode direcciones Publicado por: xv0 en 2 Enero 2013, 21:02 pm Perdón por el triple post.
Probé los push en una arquitectura de 32 bits y funcionan, porque en la de 64 bits no? ¿Como podría hacer eso en la de 64 bits? Un saludo. Título: Re: Shellcode direcciones Publicado por: avesudra en 2 Enero 2013, 21:43 pm Por lo que he estado leyendo no se puede hacer push con registros de 32 bits tiene que ser con el de 64 entero si se está programando en 64 bits ya que la pila se maneja así.. Yo no tengo mucha idea aviso eh :laugh: pero no se ¿se podría hacer esto?:
Código
¿O la he liado demasiado? He sacado esto de la documentación de AMD: Citar In 64-bit mode, the operand size of all PUSH instructions defaults to 64 bits, and there is no prefix available to encode a 32-bit operand size. Using the PUSH CS, PUSH DS, PUSH ES, or PUSH SS instructions in 64-bit mode generates an invalid-opcode exception. Fuente: http://support.amd.com/us/Processor_TechDocs/24594_APM_v3.pdfPushing an odd number of 16-bit operands when the stack address-size attribute is 32 results in a misaligned stack pointer. Título: Re: Shellcode direcciones Publicado por: xv0 en 3 Enero 2013, 15:55 pm No entendiste mí pregunta, si puedo hacer push con esas direcciones de 32 bits lo que pasa es que solo copia la primera dirección las otras dos no.
Código
Código: 11277 l CALL execve(0x7f7fffff6960,0x7f7fffff6948,0) Pero en una arquitectura de 32 bits si que funcionan. En cuanto a tú solución, no la liaste, pero las q no afectan en nada eso ya lo probé antes de que lo dijeras, como dice ese fragmento sacado de los manuales de AMD si que puedo hacer push a 16-bit pero me deja un opcode (bad). La solución es mover bits ala derecha con shr, así funciono, lo probé con otro código, cuando lo tenga implementado en la shellcode lo subo. Un saludo. P.D: La shellcode de /bin/sh pesa un byte menos con un xchg. P.D2: Todo esto lo quiero implementar en una reverse shell, pero nose si se pueden subir esos códigos al foro. Título: Re: Shellcode direcciones Publicado por: 0xDani en 3 Enero 2013, 16:59 pm Claro que se puede subir una reverse shell al foro, si hay un subforo de analisis y diseño de malware y se suben troyanos ;)
Título: Re: Shellcode direcciones Publicado por: xv0 en 5 Enero 2013, 13:13 pm Código
Mueve 40 bits ala derecha, las ff, dejando espacio para la segunda dirección. Miraré los manuales de intel o amd tendra que poner algo sobre el stack de 64 bits, en la arquitectura de 32 bits no hace falta mover bits, no sé es como si la de 64 bits no reservara espacio, no lo entiendo del todo. Un saludo. P.D: Tema resuelto. Título: Re: Shellcode direcciones Publicado por: avesudra en 5 Enero 2013, 15:50 pm Que curioso, entonces al final lo que te quedaría en la pila sería:
Código
Pero en tu primero código si funcionase te quedaría así: Código
¿Eso no importa? Perdona por la ignorancia :-\ Título: Re: Shellcode direcciones Publicado por: xv0 en 5 Enero 2013, 20:04 pm Exacto, tú mismo contestaste tú pregunta, si no moviera esos 5 byte seria así:
Código
Y el de 32 bits no funciona por culpa de los byte nulos, por eso solo reconoce //sb. Un saludo. P.D: Hice como un ejercicio con la syscall write, lo quieres? |