Tema destacado: Nueva página de elhacker.net en Google+ 
Autor
|
Tema: Crear Xploit (Leído 6,305 veces)
|
jujaLVP
Desconectado
Mensajes: 211
llega la batalla y contra el estalla ...
|
esp es el que tiene la direccion de mi shellcode,yo como direccion de retorno tengo que poner la direccion de un "call esp" que esta en alguna dll que usa el programa.el problema es que cuando intenta saltar a la dll me da error.como si no se pudiese ejecutar la "call esp".
que pasa aca?
saludos
|
|
|
|
|
En línea
|
|
|
|
|
Rojodos
|
Es mejor buscar un JMP ESP (por diversos motivos debidos a la diferencia entre JMP y CALL, el ultimo al hacer un call, guarda la siguiente direccion en la pila y te puede fastidiar la shellcode).
Yo he usado varias veces un JMP ESP en exploits y me han funcionado perfectamente. Buscalos con el findjmp o el findjmp2. Y recuerda que al "meter" el offset o la direccion en el exploit, tiene que ser "al reves" (little endian)
Si el offset es 0x77889911, se mete en el exploit asi (formato hex en un array C): \x11\x99\x88\x77
Salu2
|
|
|
|
|
En línea
|
|
|
|
jujaLVP
Desconectado
Mensajes: 211
llega la batalla y contra el estalla ...
|
sigo teniendo el mismo problema: me da access vilation cuando intento llamar al jmp esp. aca va un pedaso de codigo:
overstr[519]=0xbf; overstr[518]=0xf6; overstr[517]=0x27; overstr[516]=0x41; strcpy(buffer,overstr);
la direccion es 0xbff62741. me siento deconcertado. que pasa?
saludos
|
|
|
|
|
En línea
|
|
|
|
|
Rojodos
|
Vamos, que no me haces ni puto caso:
Tienes que meter las direcciones en formato "little endian"
Si el ofset del jmp esp es 0xbff62741, en el string seria asi:
overstr[519]=0x41; overstr[518]=0x27; overstr[517]=0xf6; overstr[516]=0xbf; strcpy(buffer,overstr);
En arquitecturas Intel y compatibles, se usa el formato "little endian". En arquitecturas SPARC y Alpha, "big endian".
Buscar por google si no sabes bien lo que es.
Pruebalo como te he dicho.
Salu2
|
|
|
|
|
En línea
|
|
|
|
Ivanchuk
Desconectado
Mensajes: 466
LLVM
|
Que problema ese. Pero me parece que lo está haciendo bien ¿o no?. Medio engañoso con los índices del arreglo  y el orden en que carga la dirección, pero lo hizo bien. Organizemos la vista: overstr[516]=0x41; overstr[517]=0x27; overstr[518]=0xf6; overstr[519]=0xbf;
Habría que ver el código, el error debe ser otro. Bytes.
|
|
|
|
|
En línea
|
|
|
|
Crack_X
Anti-War
Ex-Staff
Desconectado
Mensajes: 2.320
Peace & Love
|
Y si buscas un jmp esp que este dentro del programa no funcionaria igual?
|
|
|
|
|
En línea
|
|
|
|
|
Rojodos
|
Po zi, no me fije en los indices del array  Si le da access violation, en un Windows, es porque no tiene cargada esa dll en el ENTORNO del programa vulnerable (tiene que buscar los offsets en las DLL que cargue el programa vulnerable). Tambien puede ser que haya pillado el offset mal. Salu2
|
|
|
|
|
En línea
|
|
|
|
jujaLVP
Desconectado
Mensajes: 211
llega la batalla y contra el estalla ...
|
me sigue pasando lo mismo. cargue gdi32.dll porque no encontre un jmp esp en otra dll. aca esta el programa completo:
#include <windows.h>
unsigned char shellcode[]={0x90, 0x90, 0x90,0x33, 0xc0, 0x50, ...etc etc};
char overstr[1044]; void main() { char buffer[512]; int i; long *long_ptr=(long *)overstr,*pointer;
LoadLibrary("gdi32.dll"); for(i=0;i<256;i++) *(long_ptr+i)=(int)0xffffffff;
pointer=(long *)shellcode; for(i=520;i<(strlen(shellcode)+520);i++) overstr=*(((unsigned char *)pointer)++);
overstr[519]=0xbf; overstr[518]=0xf2; overstr[517]=0xed; overstr[516]=0xcb; strcpy(buffer,overstr); }
|
|
|
|
|
En línea
|
|
|
|
|
Rojodos
|
? No encontraste un JMP ESP en kernel32.dll o en ntdll.dll? Esas dos dlls las cargan TODOS los ejecutables, y en una de las dos (ahora no caigo en cual) hay un jmp esp. Por lo demas, VAYA LIO de "exploit" con los punteros. Echale un ojo a mi texto sobre exploits en Windows, a ver si te aclara la mente, porque la que has liado con los punteros, para hacer operaciones sencillas de concatenado y copiado de arrays no es normal. Texto: --> http://foro.elhacker.net/index.php/topic,57910.0.htmlAhora mismo tengo la mente demasiada "obnubilada" xD para responderte algo mas conciso. Salu2
|
|
|
|
|
En línea
|
|
|
|
jujaLVP
Desconectado
Mensajes: 211
llega la batalla y contra el estalla ...
|
tengo WIN ME y aca no me carga ntdll.dll y en kernell32.dll no esta(lo busque con FINDJMP)
ya lei tu documento, por cierto muy interesante,
espero poder resolver este problema
gracias igual
|
|
|
|
|
En línea
|
|
|
|
|
Rojodos
|
Diooooooos, un Win Millenium NOOOOOOO  Los Windows 95, 98 y Me tienen una pila bastante curiosa, por no no decir que no siguen los "canones" habituales. Ya me pelee con una pila de Win Me (mas bien Mek se peleo con su Win Me mientras yo le ayudaba en lo que podia, no funcionaba nada  ). Paso de meterme en tratar de que te funcione el exploit en un Win Me  Te recomendaria dos cosas: - Te pusieras como minimo un Win 2000. Es un sistema bastante estable, y puede correr en PCs poco potentes y con poca RAM. El Win Me ademas de estar obsoleto, esta mal hecho xD - No hace falta dar tantas vueltas en un exploit para copilar un string dentro de un buffer para sobreescribirlo, y copiar una shellcode. No hace falta poner punteros por todos lados. Te recomiendo que mires por ahi textos de exploits, que no se dan tantas vueltas en crear un programa vulnerable y un exploit analogo. Espero que me hagas caso  Se de lo que hablo. Salu2
|
|
|
|
|
En línea
|
|
|
|
jujaLVP
Desconectado
Mensajes: 211
llega la batalla y contra el estalla ...
|
se me cayo el mundo a pedazos..... tengo que cambiar de SO.....
gracias por su ayuda....
saludos
|
|
|
|
|
En línea
|
|
|
|
byebye
Desconectado
Mensajes: 5.093
|
hombre no tienes que cambiar necesariamnete de so, simplemente depura el programa y ves observando la pila.
|
|
|
|
|
En línea
|
|
|
|
jujaLVP
Desconectado
Mensajes: 211
llega la batalla y contra el estalla ...
|
lo que pasa es que en la pila va todo bien pero no funciona...lo mira muchisimas veces y no anda ni paratras.....
|
|
|
|
|
En línea
|
|
|
|
jujaLVP
Desconectado
Mensajes: 211
llega la batalla y contra el estalla ...
|
siii!!!!!!!!!!!!!!!!!!! vamos carajo!!! logre resolver el enigma. el problema estaba en:
en el debugger del Microsoft Visual c++ 6.0,que no me mostraba realmente lo que hacia,cuando ejecutaba el ret no me dejaba ir mas paso a paso,me ejecutaba todo seguido y me tiraba error.
use el Symbol Loader del softice y logré ver que funcionaba a la perfeccion y que el problema era de la shellcode, que no estaba codeada para mi SO.
gracias a todos por su ayuda
saludos
PD:alguien sabe donde puedo conseguir una buena referencia de assembler(no tutorial)?
|
|
|
|
« Última modificación: 3 Mayo 2005, 21:57 por jujaLVP »
|
En línea
|
|
|
|
|
|