Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - dRak0

#141
Bugs y Exploits / Re: Problema buffer overflow
31 Agosto 2014, 21:27 PM
Te recomiendo antes de meterte en estos temas  , aprender algo sobre S.O y Assembly para procesadores x86. O ir a la par , es decir , aprender exploiting a la vez. Te va a resolver muchas dudas.

Cosas vitales que te puedo decir rapido es que: Los sistemas operativos Windows, GNU/Linux, usan un modelo de memoria que no utiliza directamente la memoria fisica , sino que crean un espacio virtual , memoria virtual , que varia segun lo permitido por el procesador , con procesadores x86 podes crear un rango de memoria virtual grande pero no mas grande que con los x64.Esa memoria virtual es traducida a memoria fisica.Si la memoria fisica es mas pequeña de lo que se tiene en memoria virtual , se pasa a disco , se guarda en disco , en vez de en memoria fisica.Como esta memoria es virtual , no es directamente la memoria fisica , para darle seguridad al S.O , se decidio que cada proceso, tenga su propia memoria virtual asi otro proceso cualquiera no puede alterar a otro, una "medida de seguridad". Hay S.O(Windows) que te permiten ejecutar un HILO en un proceso remoto , escribir codigo en un proceso remoto , etc.¿Medio tonto , no?

En fin , te expliq algo sobre como administra la memoria estos S.O , acordate q el S.O es el encargado en administrar varias cosas , no solamente la memoria. Te recomiendo enserio leer S.O y Assembly. Cuando avanzes en exploiting , saldras de USERLAND y pasaras a KERNELLAND , donde necesitaras saber un poco mas de lo basico sobre S.O.

Acordate algo importante que muchos olvidan , esto que te explique no vale para todos los S.O , es simplemente el modelo de memoria que decidieron utilizar los creadores de estos OS.

Saludos , y si necesitas algo avisame.
#142
Pido disculpas si ofendi , simplemente es mi opinion y la sigue siendo. ¿Si opino diferente soy el script-kiddie par excellence?Gran logica. Ignorare el tema para no generar conflictos ni desviarlo.

Saludos.
#143
Cita de: Vaagish en 29 Agosto 2014, 23:43 PM
Jajajajajaja Igual me gusto el aporte..

Por que los programadores "se ofenden" por las ventas de otros?? Acaso son panaderos y el software es un hobby de fin de semana? O no tienen cuentas que pagar? El día que el estado no me cobre impuestos, yo regalos mis programas..

Pero si te fijas, es lo que mas piden los usuarios del foro..  :silbar:

Saludos!

¿Te preguntaste porque motivo nadie ha vendido ni compartido un crypter al publico , si todos lo piden , ni tiene mucha ciencia realizar uno?

Con respecto a ¿Por que los programadores "se ofenden" por las ventas de otros?... y quizas envidian tu inteligencia , quizas se molestan por tu falta de etica, quizas les molesta el hecho de que fomentes el mercado negro y los script-kiddies por 5 euros , no lo sabemos.

#144
Si realmente estudiaste SQL , fijate la ultima consulta que realizas.
#145
PHP / Re: [PHP y MySQL] Problema con código
16 Agosto 2014, 23:17 PM
echo "Copiando...";

Cuando no vayas a mostrar una variable usa comillas simples ''. Si usas comillas dobles PHP tambien analiza si existe una variable, afectando al rendimiento.
#146
Parece mi habitacion (Por el desorden y la bandera).
#147
¿Amigos?Pocos.Claro que no estamos para hacer amigos aca.Nombre la amistad porque la base de esta es el respeto hacia al otro , y vos , no lo tenes.

Noto cierto grado de violencia en tus respuestas y la verdad , como un sabio dice:"a quien le importa la amistad aqui" ; no pienso perder mas el tiempo con vos.
#148
CitarEs como dijo karmany pero nadie hizo caso, o mejor dicho nadie entendío lo que dijo ya que no lo sabian.

Alguien ignorante como MCKSys Argentina, UND3R y yo , dijo :

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas"

Podras saber mucho de este tema pero tus comentarios no reflejan mucha inteligencia.

Pero cuidado!En el fondo nos parecemos , somos ignorantes.Yo de esto y vos de la amistad , solidaridad, compañerismo,HUMILDAD;No te hagas drama son solo palabras de un chico ignorante de 20 años.

Saludos desde argentina :) , doctor aleman.



#149
Que error mas tonto jeje.  :P

Te funciono el CreateRemoteThread()?Me tira error 5 , osea AccesoDenegado. Puede ser que sea por que lo estoy corriendo en WIN7 x64 .Lei que algunos tienen el mismo problema , pero en win8 corre bien.

Edito:
En win7 x64 me tira acceso denegado.
En win xp sp3 x86 funciona bien.
En win xp sp 2 x86 funciona bien.
En win xp x86 funciona bien.

Gracias!

PD:Conoces algun buen libro orientado a la API de windows? De teoria de windows toy leyendo Windows Internals 6.Aunque tiene practica , no es sobre la api de windows.

PD2:Perdon por las molestias , soy mas de unix , unix like. Poseo poco conocimiento en windows , pero estoy tratando de aprender.

#150

#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>

struct PARAMETROS{
DWORD MessageBoxInj;
char text[4];
char caption[4];
int buttons;
};

typedef struct PARAMETROS PARAMETROS;
int obtenerPID(char*);
int privilegios();
typedef int (WINAPI* MessageBoxParam)(HWND,LPCSTR,LPCSTR,UINT);
DWORD FuncionInyectar(PARAMETROS* myparam);
DWORD Useless();


/****************************COMIENZO MAIN!*******************************/

int main(int argc,char **argv)
{
HANDLE procesoHandle,hilo=NULL;
PARAMETROS data;
char *mytext="Hola";
char *mycaption="Hola";
HMODULE user32=NULL;
DWORD size_FuncionInyectar;
LPVOID MyFuncAddress,parametrosAddress=NULL;
int privilegio;


//Obtengo PID
int pid=obtenerPID("sublime_textSinASLR.exe");
printf("PID:%d\n",pid);

//Privilegios
privilegio=privilegios();
printf("Privilegios%d\n",privilegio);

//Obtengo handle del proceso Remoto
if((procesoHandle=OpenProcess(PROCESS_ALL_ACCESS,0,pid))==NULL)
{
printf("%s\n","Error al abrir proceso remoto");
return 0;
}

//Inicializo estructura
user32=LoadLibrary("User32.dll");
data.MessageBoxInj=(DWORD)GetProcAddress(user32,"MessageBoxA");
strcpy(data.text,"Hola");
strcpy(data.caption,"Hola");
data.buttons=MB_OKCANCEL|MB_ICONQUESTION;

//Tamano de la funcion en bytes

size_FuncionInyectar=(PBYTE)Useless - (PBYTE)FuncionInyectar;

//Reservo espacio en proceso remoto para la funcion

MyFuncAddress=VirtualAllocEx(procesoHandle,NULL,size_FuncionInyectar,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE);
if(MyFuncAddress==NULL)
{
printf("%s\n","Error al reservar memoria para la funcion en el proceso remoto");
return 0;
}

printf("Direccion Funcion:%p \n %d Bytes reservados \n",MyFuncAddress,sizeof(PARAMETROS));


//Reservo espacio en proceso remoto para los parametros de la funcion

parametrosAddress=VirtualAllocEx(procesoHandle,NULL,sizeof(PARAMETROS),MEM_RESERVE|MEM_COMMIT,PAGE_READWRITE);
if(parametrosAddress==NULL)
{
printf("%s\n","Error al reservar memoria para los parametros de la funcion en el proceso remoto");
return 0;
}
printf("Direccion Parametros:%p \n %d Bytes reservados \n",parametrosAddress,sizeof(PARAMETROS));

//Escribo en los espacios reservados
//1.Funcion
if(WriteProcessMemory(procesoHandle,MyFuncAddress,(void*)FuncionInyectar,size_FuncionInyectar,NULL)!=0)
{
printf("%s\n","Error al escribir la funcion en el proceso remoto");
printf("%d\n",GetLastError());
return 0;
}
//2.Parametros
if(WriteProcessMemory(procesoHandle,parametrosAddress,&data,sizeof(PARAMETROS),NULL)!=0)
{
printf("%s\n","Error al escribir los parametros en el proceso remoto");
return 0;
}

//OK!Perfecto!Reservamos y Escribimos en el proceso remoto!Ahora a ejecutar un hilo!

if((hilo=CreateRemoteThread(procesoHandle,NULL,0,(LPTHREAD_START_ROUTINE)MyFuncAddress,parametrosAddress,0,NULL))==NULL)
{
printf("%s\n","Error al crear hilo remoto!");
return 0;
}
printf("%s\n","Se inyecto el codigo");

return 0;
}

/****************************Funciones*************************/
int obtenerPID(char *nombreArchivo)
{
HANDLE snapshotProcesos=NULL;
PROCESSENTRY32 estructuraProceso;

estructuraProceso.dwSize=sizeof(PROCESSENTRY32);
if(snapshotProcesos=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0))
{
do
{
if(Process32Next(snapshotProcesos,&estructuraProceso))
{}
else
{
CloseHandle(snapshotProcesos);
return -1;
}
}
while(strcmp(estructuraProceso.szExeFile,nombreArchivo)!=0);
CloseHandle(snapshotProcesos);
return (int)estructuraProceso.th32ProcessID;
}
}

DWORD FuncionInyectar(PARAMETROS* myparam)
{
MessageBoxParam MsgBox = (MessageBoxParam)myparam->MessageBoxInj;

int result = MsgBox(0,myparam->text,myparam->caption,myparam->buttons);

switch(result)
{
case IDOK:
break;
case IDCANCEL:
break;
}
return 0;

}

DWORD Useless()
{
return 0;
}

int privilegios(){
HANDLE Token;
TOKEN_PRIVILEGES tp;
if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&Token))
{
   LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
   tp.PrivilegeCount = 1;
   tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
   if (AdjustTokenPrivileges(Token, 0, &tp, sizeof(tp), NULL, NULL)==0){
   return 1;
   }else{
   return 0;
  }
}    
return 1;
}