Título: Dudas con Buffer Overflow... Publicado por: RocKHounD en 27 Octubre 2011, 10:51 am Buenos días,
Estoy siguiendo un "paper" y quería que me resolvierais algunas dudas que tengo. Paper: http://www.exploit-db.com/download_pdf/17971 Os posteo el histórico que he hecho. creo un script en python para que genere un archivo .m3u Código: Código: Código: Código: Con Ollydbg abro el archivo causando un desbordamiento: Código: Código: Ahora calculo el tamaño exacto que sobreescribe la pila con pattern_offset del EIP 36684135. El resultado es 227 por lo que modifico el script de nuevo quedando así: Código: Código: Código: Código: Código: Código: Entonces aqui vienen mis preguntas... ¿Por que EIP no se sobreescribe con "A", EIP ABABABBA ? En el paper el tio usa 207 caracteres a diferencia de los 227 que me ha calculado el pattern_offset, ¿por que? Luego comenta que con findjmp intenta encontrar direcciones válidas para hacer saltar luego a nuestra shellcode, no entiendo esta parte, es más no se que librería he de buscar... De momento es todo porque no quiero seguir con el tuto sin aclarar estas cosas... Disculpad por la chapa que os he dado y de nuevo disculpas si esto no va a aquí. Gracias a todos. Título: Re: Dudas con Buffer Overflow... Publicado por: Ivanchuk en 28 Octubre 2011, 13:07 pm Hola rockhound,
Citar Entonces aqui vienen mis preguntas... De mi parte no tengo idea, tendrias que depurarlo un poco mas para encontrar el momento donde se sobreescribe el eip.¿Por que EIP no se sobreescribe con "A", EIP ABABABBA ? Citar En el paper el tio usa 207 caracteres a diferencia de los 227 que me ha calculado el pattern_offset, ¿por que? Para mi que es porque el path que el tiene es mas largo que el tuyo (C:\Users\cprados\Desktop\exploit\), por eso necesitas mas "A".Citar Luego comenta que con findjmp intenta encontrar direcciones válidas para hacer saltar luego a nuestra shellcode, no entiendo esta parte, es más no se que librería he de buscar... Tenes que buscar en las librerias que carga coolplayer.exe, en el olly podes ver todos los modulos cargados. A findjmp le tenes que indicar la dll y te va a encontrar un "jmp esp" o algo parecido para poder saltar a la pila que es donde deberias poner tu shellcode.Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 29 Octubre 2011, 02:42 am No sabia que la longitud del path pudiera ser la causa...
miraré de nuevo poniendolo en el mismo sitio que el reproductor. gracias por aclararme lo del jmp hago pruebas y os comento gracias!! Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 31 Octubre 2011, 10:01 am He movido tanto el ejecutable como el exploit a C:\CoolPlayer219_Bin
he creado de nuevo el script con los 1000 caracteres de pattern_create y al lanzarlo me da un EIP distinto, por lo que el tema del path que me comentabas es cierto que varía. Código: CPU - main thread con pattern_offset obtengo el resultado "239" y con él, vuelvo a modificar el script, lo lanzo de nuevo y obtengo el mismo EIP Extraño de antes... Código: CPU - main thread Citar CPU Stack Address Value ASCII Comments 0012208C 7763ADD3 Ócw 00122090 FFFFFFFE þÿÿÿ 00122094 0040CA2A *Ê@ ; RETURN from coolplayer.0040BFC0 to coolplayer.0040CA2A 00122098 ABABABAB «««« 0012209C 001220B0 ° ; ASCII "C:\CoolPlayer219_Bin\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"... 001220A0 00000000 001220A4 000000EF ï 001220A8 00122990 ) ; ASCII "C:\CoolPlayer219_Bin\Exploit.m3u" 001220AC 009FA5E0 य़ ; ASCII 41,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 001220B0 435C3A43 C:\C 001220B4 506C6F6F oolP 001220B8 6579616C laye 001220BC 39313272 r219 001220C0 6E69425F _Bin 001220C4 4141415C \AAA 001220C8 41414141 AAAA 001220CC 41414141 AAAA 001220D0 41414141 AAAA 001220D4 41414141 AAAA 001220D8 41414141 AAAA 001220DC 41414141 AAAA 001220E0 41414141 AAAA 001220E4 41414141 AAAA 001220E8 41414141 AAAA 001220EC 41414141 AAAA 001220F0 41414141 AAAA 001220F4 41414141 AAAA 001220F8 41414141 AAAA 001220FC 41414141 AAAA 00122100 41414141 AAAA 00122104 41414141 AAAA 00122108 41414141 AAAA 0012210C 41414141 AAAA 00122110 41414141 AAAA 00122114 41414141 AAAA 00122118 41414141 AAAA 0012211C 41414141 AAAA 00122120 41414141 AAAA 00122124 41414141 AAAA 00122128 41414141 AAAA 0012212C 41414141 AAAA 00122130 41414141 AAAA 00122134 41414141 AAAA 00122138 41414141 AAAA 0012213C 41414141 AAAA 00122140 41414141 AAAA 00122144 41414141 AAAA 00122148 41414141 AAAA 0012214C 41414141 AAAA 00122150 41414141 AAAA 00122154 41414141 AAAA 00122158 41414141 AAAA 0012215C 41414141 AAAA 00122160 41414141 AAAA 00122164 41414141 AAAA 00122168 41414141 AAAA 0012216C 41414141 AAAA 00122170 41414141 AAAA 00122174 41414141 AAAA 00122178 41414141 AAAA 0012217C 41414141 AAAA 00122180 41414141 AAAA 00122184 41414141 AAAA 00122188 41414141 AAAA 0012218C 41414141 AAAA 00122190 41414141 AAAA 00122194 41414141 AAAA 00122198 41414141 AAAA 0012219C 41414141 AAAA 001221A0 41414141 AAAA 001221A4 41414141 AAAA 001221A8 41414141 AAAA 001221AC 41414141 AAAA 001221B0 41414141 AAAA 001221B4 ABABABBA º««« 001221B8 ABABABAB «««« 001221BC 001200AB « 001221C0 00000000 001221C4 00122990 ) ; ASCII "C:\CoolPlayer219_Bin\Exploit.m3u" 001221C8 00000003 001221CC 00000015 No entiendo nada.... Agradecería una manita gente!! Gracias. Título: Re: Dudas con Buffer Overflow... Publicado por: Ivanchuk en 2 Noviembre 2011, 13:42 pm Me fije en la doc y pattern_offset te dice la cantidad de bytes a rellenar antes de alcanzar el eip de retorno. Para llegar al eip tenes que meterle 239 bytes y los 4 siguientes (arch de 32 bits) serian el eip.
Código
Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 2 Noviembre 2011, 19:56 pm Código: "\xef\xbe\xad\xde" donde has visto esa parte?? muchisimas gracias! ya empiezo a ver algo de luz :D Título: Re: Dudas con Buffer Overflow... Publicado por: Ivanchuk en 2 Noviembre 2011, 22:00 pm En la wiki de metasploit ;)
:http://en.wikibooks.org/wiki/Metasploit/WritingWindowsExploit Citar Then we use patternOffset to know the number of characters to send before hitting EIP GL! Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 3 Noviembre 2011, 17:42 pm pero quiero decir esta cadena
Código: "\xef\xbe\xad\xde" de donde has sacado esto. Thanks Título: Re: Dudas con Buffer Overflow... Publicado por: Ivanchuk en 4 Noviembre 2011, 09:12 am Ah, se la agregue yo nomas, con ese valor se deberia sobreescribir el eip (0xdeadbeef), te funciono?
Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 7 Noviembre 2011, 09:52 am Cuando agrego "\xef\xbe\xad\xde" al exploit el resultado es el mismo, la EIP no varía...
no entiendo que diferencia hay. me puedes explicar esto? Título: Re: Dudas con Buffer Overflow... Publicado por: Ivanchuk en 7 Noviembre 2011, 12:33 pm ah, pense que te habia funcionado... seguis viendo en eip 0xabababba ?
La sobreescritura del eip debe variar segun el tamano del buffer, o bien el programa mismo te modifica los ultimos bytes, no te queda otra que depurarlo mucho mas. Proba sino de generar un pattern de por ej. 256 bytes y con offset_pattern sacas el desplazamiento y haces siempre el bof con un buffer de 256 bytes (metiendo el eip donde tiene que ser), asi te evitas al menos el primer factor que te comentaba. Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 7 Noviembre 2011, 19:51 pm Bueno, te cuento mis avances...
he empezado de nuevo y creo que algo mas entiendo... vamos a ver, pattern_offset me da 227 pero si meto \x41 * 227 veo en el stack que me quedan un par de filas por rellenar, en cambio si agrego \x41 * 231 + "\xef\xbe\xad\xde" si veo que ESP toma el valor 0xdeadbeef mientras que EIP tiene "\x41\x41\x41\x41" como valor... lo he hecho bien? o EIP tiene que tener como valor 0xdeadbeef... supongo que tendrá que ser ESP ya que es lo siguiente que se ejecuta en la pila... :-\ Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 8 Noviembre 2011, 16:19 pm VALE!!!!! Conseguido porfín!!! jajajajaj
Madre mia que locura... Comento lo que he hecho... Código: buffer = "A" * 227 Y listo, nunca me he alegrado tanto de ver el calc.exe en todo su esplendor... El jmp esp del kernel32.dll no funcionaba y he usado una de user32.dll aunque me queda una duda... y es para que sirven los nops realmente... cuando voy a follow stack veo que desde que he sobreescrito EIP hasta que veo de nuevo lineas "AAAA" pasan 26 líneas, de ahi el "\x90" * 26 de arriba, aunque he probado poniendo 30 y seguía funcionando el exploit. Acabo de probar a poner otra shellcode y me da error... por lo que entiendo que he superado el espacio disponible para la shellcode... me podéis decir como se calcula ese espacio? voy a probar a meter un pattern donde iria la shellcode... digo yo que me dirá de cuanto espacio dispongo... no?? Muchas gracias Ivanchuk por todo! Título: Re: Dudas con Buffer Overflow... Publicado por: Ivanchuk en 9 Noviembre 2011, 09:21 am Buenisimo!! Un nuevo exploiter en la comunidad :-)
Citar aunque me queda una duda... y es para que sirven los nops realmente... cuando voy a follow stack veo que desde que he sobreescrito EIP hasta que veo de nuevo lineas "AAAA" pasan 26 líneas, de ahi el "\x90" * 26 de arriba, aunque he probado poniendo 30 y seguía funcionando el exploit. Los nops se usan para darle una cierta libertad a la direccion de retorno al stack, en tu caso la direccion es siempre fija (=esp despues del jmp esp en user32) y se encuentra justo despues del ret. Si le sacas los nops deberia seguir funcionando. Citar Acabo de probar a poner otra shellcode y me da error... por lo que entiendo que he superado el espacio disponible para la shellcode... me podéis decir como se calcula ese espacio? voy a probar a meter un pattern donde iria la shellcode... digo yo que me dirá de cuanto espacio dispongo... no?? Me parece raro que hayas superado el espacio reservado para el stack porque vi que probaste con un pattern_create de 1000 bytes y paso sin problemas. El error debe estar en la shellcode que le pusistes. Posteala aca para verla sino. Meterle un pattern donde iria la shellcode no te va a decir cuanto espacio tenes disponible, imagino que eso lo podes ver en la info del ejecutable (PE), al menos en los elf aparece. Sino mas facil, anda hasta abajo del todo en la sección de stack y fijate donde termina jeje. Título: Re: Dudas con Buffer Overflow... Publicado por: RocKHounD en 9 Noviembre 2011, 21:23 pm Usé una shellcode que saqué con msfpayload, un windows\bind tcp por el puerto 1234
quizás no la generé bien... tengo que seguir probando. |