Tema destacado: Suscripción al boletín mensual de elhacker.net
Autor
|
Tema: shellcoding,,otro poblema!! (Leído 1,203 veces)
|
|
krispin
|
Buenax a todos!!! tengo un problemilla. estoi empezando en el mundillo este del shellcoding y aca les cuento el problema. me ago el tipioo programa en c al que se le pasa una cadena y desborda el buffer. bien pues, cuando te sale la tipica ventana del error del windows(este programa a efectuado...) en el offset aparece la entrada que meti yo. ejemplo: en un buffer de tamaño 8, si intento meter: 12345678aaaabbbb, el programa casca y en la pantallita de error el offset sale el equivalente a bbbb en hexadecimal, es decir los 8 primeros caracteres ascii se los pasa y los 4 siguientes tambien. todo bien.el problema es que desde la linea de comandos, existen valores que al pasarlos de hexadecimal a ascci salen simbolos especiales que no se pueden escribir en la ventana de comando, es decir, si tu intentas escribir uno de esos, te lo sustituye por ^k. como puedo acer entonces para probar el exploit? gracias, espero kesaya entendidooooo graciaxxx
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
Ea no entendi muy bien tu pregunta............hazla mas clara........ademas es como mejor explotar primero en linux, windows es mas complicado, mas oscuro, etx...... AHora que tipo de valores hex no pasan a ascii ? estas hablando de el shellcode ? el shellcode no debe tener ningun problema de estos asi que no veo cual es tu problema,.. explicate bien, pon ejemplos etx(usa un debbuger y pega la salida !!), ya que mis dotes de adivino no estan funcionando....
|
|
|
|
|
En línea
|
|
|
|
|
krispin
|
el problema me da con el simbolo tu si intentas pegar eso en la linea de comandos, te lo sustituye por ^k Entendiiiidooooooo? gracias tio
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
Pero que es lo que estas pegando ??? No mames aun no adivino que es lo que estas pegando ... aun no se que pasa no me funciona .. Muestrame lo que andas pegando y la salida...
|
|
|
|
|
En línea
|
|
|
|
|
krispin
|
Haber si que da claro(la verda que yo no tengo nada klaro pero bueno, se intenta): mi jmp esp-------->77D7C60B que si lo pasas a ascii------>wׯ en la pantalla del windows, si meto: 12345678bbbbaaaaa el error me da en el offset: 60606060, es decir, aaaa en hexadecimal. yo quiero meter la cadena 12345678bbbbwׯ pa que el erro me lo de en el offset 77D7C60B. el poblema es que con el aaaa funciona pero con los simbolos esos raros no. a quedau un poco mas claro esta vez? gracias heap por intentar ayudar, ya te digo que soi un poko tarugin, pero bueno.
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
nah men para que lo pasas a ascii ? el shellcode queda en hexadecimal.......igual porque no lo haces en linux yo en windows no me siento comodo trabajando asi que me cuesta explicarte.....pero no entiendo para que lo pasas a ascii dejalo en hex...
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
Ea ya he cachado, no se muy bien en win, pero esto nada tiene igaul que ver con shellcodes, prueba esto. 12345678bbbb\xb0\xc6\xd7\x77
|
|
|
|
|
En línea
|
|
|
|
|
krispin
|
keba keba!! es simplemento un : char buf[8]; strcpy(buf, argv[1]); si tu le pasas 16 caracteres ascii, el 13,14,15 y 16 son los que aparecen en el error del windows. si el caracter 13,14,15,16 son a,b,c o la mayoria de los carcateres, pues va bien, es decir, aparecen esos caracteres pero en exadecimal. el problema es si quieres introducir el ejemplo que poste anteriormente.
|
|
|
|
|
En línea
|
|
|
|
|
Paisterist
|
mmm, podría ser que 8 llenan el buffer, los 4 siguientes llenan EBP y los otros 4 EIP. Al buscar la dirección de retorno en EIP te sale el mensaje, eso creo.
Saludos
|
|
|
|
|
En línea
|
 Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
|
|
|
|
krispin
|
Paisterist, si lo que dices si que es cierto, el problema es que existen caracteres que no cuelan en la linea de comandos. yo consigo machacar eip y poner la direccion en unos casos, por ejemplo, si quiero sobrescribir eip con 60606060 pues meto aaaa, pero si meto caracteres que mencione antes, pues no chuta. esto ya lo esplique mejor anteriormente. gracias
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
ahh ya me aburriste eres un pinche indio.................no sabes ni que putas estas diciendo...................machacar EIP ? es sobeescribir la return address, segundo estas trabajando con un buffer muy peque~o para principiante, tercero no sabes ni que es una direccion en little endian, no habia visto a alguien tan terco.....puedes meter la direccion en hexadecimal ok !! 12345678bbbb\xb0\xc6\xd7\x77 Ya no mames no sabes ni de que andas hablando, no te creas l33t ni siquiera sabes que es un shellcode....anda lee http://www.shellcode.com.ar/docz/bof/bof-forkidz-es.txt
|
|
|
|
« Última modificación: 10 Febrero 2005, 07:37 por heap »
|
En línea
|
|
|
|
|
Rojodos
|
trankilo heap, que si se de lo que habla  Esta diciendo que no sabe como instroduccir la shellcode por argumentos al programa, que los recoge desde la linea de comando. Puedes hacer algo asi, este seria tu "exploit". #include <stdio.h> // Entrada/Salida #include <stdlib.h> // execv()
int main (int argc,char **argv) { //Declaramos argv para usarlo con el execv
char evilbuffer[]=""; // Aqui iria en tu caso los bytes que van en el buffer char shellcode[]=""; //Aqui iria la shellcode char offset[]=""; //Aqui iria el offset con el que sobreescribes EIP, seguramente buscaras un JMP ESP
strcat(evilbuffer,offset); //Concatenas evilbufer+offset strcat(evilbuffer,shellcode); //Concatenas evilbufferoffset+shellcode argv[0] = "vuln1"; // Tu programa vulnerable, cambia el nombre argv[1] = evilbuffer; argv[2] = NULL; execv ("vuln1.exe",argv); //Cambia el nombre de vuln1
} Ahi tendrias que cambiar el tamaño de evilbuffer por el que kieres petar + padding hasta llegar al ret, y meterle "basura", como lo que haces de "12345678bbbb". El offset ya sabes lo que va, \xb0\xc6\xd7\x77 que me imagino que es un JMP ESP. Y la shellcode va detras. Ese codigo de ahi arriba compila perfectamente en DevCpp, por supuesto, poniendole los tamaños a los arrays y rellenandolos. Al ejecutar tu exploit, ejecutara el programa vulnerable y le pasara lo que contenga evilbuffer por parametros, petara, y ejecutara tu shellcode. Espero que te sirva. Heap, yo entiendo mucho mucho mucho mejor la explotacion en Windows, para mi Linux es mucho mas dificil. Salu2
|
|
|
|
|
En línea
|
|
|
|
|
krispin
|
Heap, eres tonto de cojones!!! no hay peor cosa que andar con una persona que se cree que sabe y no tiene ni p**a idea.
Eso es rojodos, gracias, eso es lo que queria, no era tan complicao!!! graciax!!!!!!!!!
|
|
|
|
|
En línea
|
|
|
|
|
heap
|
Heap, eres tonto de cojones!!! no hay peor cosa que andar con una persona que se cree que sabe y no tiene ni p**a idea.
Eso es rojodos, gracias, eso es lo que queria, no era tan complicao!!! graciax!!!!!!!!!
keba keba!! es simplemento un : char buf[8]; strcpy(buf, argv[1]); si tu le pasas 16 caracteres ascii, el 13,14,15 y 16 si tu le pasas 16 caracteres ascii, el 13,14,15 y 16 son los que aparecen en el error del windows. si el caracter 13,14,15,16 son a,b,c o la mayoria de los carcateres, pues va bien, es decir, aparecen esos caracteres pero en exadecimal. el problema es si quieres introducir el ejemplo que poste anteriormente.
ahi esta la prueba, cuales 16 caracteres ascii, solo tienes que pasarle 16 bytes, ahi no dice nada de ascii ! asi que hecho NO ! Tu no sabes ni lo que quieres...........de hecho lo que querias era introducir una direccion de memoria en EIP y ya me di cuenta que te dije bien como hacerlo luego de haber leido el txt de rojodos, pero es que a una persona que pregunta como tu es imposible explicarle porque a todo menzo ni entiende que es lo que quiere hacer. Las direcciones se pasan en formato hexadecimal, y la arquitectura da little endian, y tu de puro buto la metias como ascii..................ya no mames te entendi bien, pero ea seguro aun ni sabes lo que quieres.... mejor empieza leyendo algo de assm y C..
|
|
|
|
« Última modificación: 10 Febrero 2005, 23:58 por heap »
|
En línea
|
|
|
|
|
|