Poslao: 26 Feb 2009 05:20
|
offline
- crashandburn
- Novi MyCity građanin
- Pridružio: 26 Feb 2009
- Poruke: 7
|
Nedavno sam se upustio i pricu sa sigurnosnim propustima u programiranju i njihovom iskoriscavanju...Do sad je sve islo uspesno,ali iako sam mislio da ce ici lako,pokusao sam da iskoristim rupu u scanf() funkciji u programu koji ne uzima argumente:
void main(){
char buffer[256];
scanf("%s",buffer);
.
.
}
Pokusavao sam i sa ENV variablama i pomocu baffera i preko konzole ali jednostavno ne znam kako da ubacim svoj kraftovani baffer u funkciju (odnosno program) i pokusam da prepunim postojeci buffer u ranjivom programu!?
Svaka sugestija bi bila dobra!!!
U pitanju su uzeti u obzir sistemi Linux i BSD!
Izvinjavam se sto je post okacen ovde ali mislio sam da mu je ovde najpribliznije mesto!
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 26 Feb 2009 09:25
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12524
- Gde živiš: Južni pol
|
Nisam se igrao sa time ranije, ali znam da je bilo nekoliko vrlo zanimljivih članaka u Phearless-u: http://www.phearless.org/. Pa overi. Ako nađeš šta zanimljivo, bilo bi dobro da nam javiš kako napreduje eksperimentisanje.
|
|
|
|
Poslao: 26 Feb 2009 09:37
|
offline
- crashandburn
- Novi MyCity građanin
- Pridružio: 26 Feb 2009
- Poruke: 7
|
Tu si upravu da ima zanimljivh clanaka,bas sam pregledao sta imaju pre nego sto sam postovao ovo, ali problem je sto ovakav slucaj nigde nije objavljen i u jednom tutorijalu!?A stvarno mi nije jasno zasto...sto je najgore i linux i unix koristim vec duze vremena i probao sam gomilu nacina redirekcije,ali bezuspesno...ili ja gresim u procesu redirekcije ili sam mozda cak i dobro uradio samo nisam stavio na dobro mesto
Ali mogucnosti su prevelike zato mi i treba pomoc!!!
|
|
|
|
Poslao: 26 Feb 2009 10:25
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12524
- Gde živiš: Južni pol
|
Nađi sors nekog buffer overflow exploita i prouči sors. To je najefektivniji način. Mislim da postoje tutorijali na ovu temu. Samo nisam siguran koliko su takvi linkovi dozvoljeni na MyCity-u.
|
|
|
|
Poslao: 26 Feb 2009 11:45
|
offline
- pixxel
- Legendarni građanin
- Pridružio: 21 Jun 2005
- Poruke: 9091
- Gde živiš: Tu i tamo...
|
Mi smo na vetsu na vezbama iz sigurnosti u racunarskim mrezama imali VEZBE iz buffer overflowa. Koliko se secam, kompajler sam pravi provere i dodaje zastitu od buffer overflowa, tako da moras u nekom dissassembleru da promenis kod programa, da bi mu dozvolio buffer overflow...
|
|
|
|
Poslao: 26 Feb 2009 17:00
|
offline
- crashandburn
- Novi MyCity građanin
- Pridružio: 26 Feb 2009
- Poruke: 7
|
Hmmm... sve je to tacno...na neki nacin!
Problem je sto ja vec imam program koji radi buffer overflow,tj. imam ih vise,i znam da ga napisem,i to za skoro sve *nix sisteme,i svi rade,ali problem se javlja kad to pokusam da izvedem na programu koji ne uzima argumente iz komandne linije vec pomocu scanf() funkcije,jer jednostavno ne mogu da ubacim svoj bafer unutra!
Treba mi samo neko ko zna na koji nacin bi mogao da prosledim argument ili neko ko je radio tako nesto da mi objasni gde gresim?!?
P.S. Postoji dosta objasnjenja,ali veruj mi ne na ovu temu,a i ako ima ocigledno ga je jako tesko naci!
|
|
|
|
|
Poslao: 26 Feb 2009 22:32
|
offline
- crashandburn
- Novi MyCity građanin
- Pridružio: 26 Feb 2009
- Poruke: 7
|
Naravno da sam pretrazivao da nisam,verovatno ne bih ni postovao ovo!!
A pokusavam pa prepunim bafer prostog C programa bez arg sa dole prikacenim primerom programa za buffer overflow(examp):
void main(){
char buffer[256];
scanf("%s",buffer);
printf("%s\n",buffer);
}
mycity.rs/must-login.png
Ono sto me zanima je u kojoj sintaksi ili na koji nacim moze biti koriscen!!!
Okaceni prog je potpuno funkcionalan bez mnogo nagadjanja offseta!!!
|
|
|
|
Poslao: 26 Feb 2009 22:40
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
U ovom zadnjem kodu, gde mislis da te BoF odvede, na koju instrukciju?
void main(){
char buffer[256];
scanf("%s",buffer);
printf("poruka 1");
printf("poruka 2");
}
Hajde sada bofuj ovo. Polako prepunjuj bafer (prvo jedan char viska, pa onda dva itd.) sve dok ne postignes da se "poruka 1" preskoci i da ti na ekran izbaci pravo "poruka 2".
Dopuna: 26 Feb 2009 22:40
Da se odmah ogradim, ovo sam pisao iz glave.
Radio sam ovo na fakultetu, ali pre 3 godine, tako da je to poprilicno izvetrelo iz glave.
|
|
|
|
Poslao: 26 Feb 2009 22:48
|
offline
- crashandburn
- Novi MyCity građanin
- Pridružio: 26 Feb 2009
- Poruke: 7
|
Pa stvar bi trebalo da bude prosta(bar mislim )kada se ebp na mesto povratne adrese bi trebalo da stavimo adresu druge printf funkcije i tako bi pri povratku iz scanf-a skocili na 2. printf....
Ali i dalje ponavljam da u gornjem primeru i ovom koji si ti naveo mi nije jasno na koji nacin da unesem novu povratnu adresu?
|
|
|
|