[ DownBload @ 31.03.2005. 22:14 ] @
Evo konacno i jedan zadatak za exploitanje na windozama. Ajde pliz nemojte ove teme sa zadacima ostavljati prazne.

Code:

/*  
 * Simple windows exploitation challenge 
 * ------------------------------------- 
 * Tested on VC++ 6.0 
 *  
 *  Coded by Leon Juranic <[email protected]
 * 
 */ 
 
#include <stdio.h> 
#include <time.h> 
#include <stdlib.h> 
#include <string.h> 
 
int cookie; 
 
main (int argc, char **argv) 

 
int control_cookie; 
 
char buffer[24]; 
char *ptr=buffer; 
char buffer2[24]; 
 
srand(time(NULL)); 
cookie = rand(); 
control_cookie = cookie; 
 
strcpy (buffer2,argv[1]); 
strncpy (buffer,argv[2],strlen(argv[2])); 
buffer[strlen(argv[2])] = '\0'; 
 
printf ("%s",ptr); 
 
 
if (control_cookie != cookie) 

printf ("Buffer overflow detected, sorry!!!\n"); 
exit(-1); 

 
printf ("OK, everything is fine\n"); 
 

[ Sundance @ 01.04.2005. 06:13 ] @
E super da si i ovdje postao :)

Nego, ajd za početak postaj i binary programa jer na win imaš jedno 50 kompajlera koji ljudi koriste (a ne samo i isključivo gcc kao na linuxu :) +jaaaako ovisi sa kojim je switchevima kompajler korišten. Inače će exploit koji ljudi budu davali raditi samo njima ;)

I za win exploitmeje bi najbolje ne bilo uopće davati izvorni kod, da što više bude izgledalo poput "pravog zadatka" ;)
[ `and @ 13.04.2005. 18:20 ] @
Evo malo sam seo i pogledao ovaj exploime ali mi bas ne ide sa resenjem pa sam resio da kazem sta mi je jasno ( a mozda to nije tacno :) i da zatrazim pomoc ...

Skapirao sam da ovde :

Code:

strcpy (buffer2,argv[1]);


Treba prepisati pointer da pokazuje na EIP ( ali ne znam kako da nadjem tu adresu )

A da ovde :

Code:

strncpy (buffer,argv[2],strlen(argv[2]));


Jednostavno prepisem buffer sa adresom koju hocu, jer ce onda ustvari to biti EIP, koji moze pokazivati bilo (t.j. na neki moj shellcode).

E sad da li sam blizu ili sam totalno omasio ?


p.s. Ako niko ovo ne objasni ... DownBload postavi resenje ili bar hint da bi ovo ukapirali pa da predjemo dalje ...
[ Vojislav Milunovic @ 14.04.2005. 22:30 ] @
Code:

int control_cookie;


To je poenta =)
[ Danilo Vukovic @ 15.04.2005. 20:34 ] @
Pa da to je poenta. To je zastita. Ako dodje do overflowa,prebrise control_cookie.... Bar bi tako trebalo...........

Al mi se cini da to kod mene nece nikako doci. control_cookie mi se nalazi iznad buffer i buffer2..... Ako razumete sta hocu reci :)

buffer 73fdb0
buffer2 73fd90
control_cookie 73fd8c

Ja jedino da izmenim neku drugu povratnu adresu na steku... Video sam da bi moglo.

Pomoc bi prijala.......

Kompajlirao sa DevC++

[Ovu poruku je menjao Danilo Vukovic dana 16.04.2005. u 15:11 GMT+1]
[ `and @ 16.04.2005. 12:04 ] @
Ma znam da je poenta to si rekao ali sam mislio da na onaj nacin zaobidjem prepisivanje control_cookia ... ili mozda samo treba da nadjem gde se nalazi ta vrednost pomocu nekog disassemblera i onda ubacim ... ajde ja sam pocetnik pokazite mi :)
[ DownBload @ 18.04.2005. 13:46 ] @
Ok, da ne duzimo - prepisite SEH function pointer ili brute-forcajte cookie.
[ Vojislav Milunovic @ 19.04.2005. 23:06 ] @
E vidiš to mi nikad ne bi balo napamet u vin :)
[ DownBload @ 20.04.2005. 14:21 ] @
Vjerojatno nebi ni meni balo na pamet da nisam to procitao ;-)
[ Vojislav Milunovic @ 21.04.2005. 17:11 ] @
Šta li sam mislio kad sam kucao :)
[ DownBload @ 22.04.2005. 18:54 ] @
Isto ko i ono neku vecer na IRC-u ;-))) "Zmulj" ili tak nesto ;-)