Linux UNIX and Buffer Overflows

1

Linux UNIX and Buffer Overflows

offline
  • 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!!! Very Happy
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.
offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • 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. Wink



offline
  • 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 GUZ - Glavom U Zid
Bebee Dol
Ali mogucnosti su prevelike zato mi i treba pomoc!!!

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • 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.

offline
  • pixxel  Male
  • 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...

offline
  • 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?!? Shocked
P.S. Postoji dosta objasnjenja,ali veruj mi ne na ovu temu,a i ako ima ocigledno ga je jako tesko naci! Idea

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12524
  • Gde živiš: Južni pol

Konsultovao si Google?
http://www.google.com/search?q=scanf+buffer+overflow

Daj neki kod da vidim šta tačno pokušavaš.

offline
  • 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!!!

offline
  • 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.

offline
  • Pridružio: 26 Feb 2009
  • Poruke: 7

Pa stvar bi trebalo da bude prosta(bar mislim Bebee Dol )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?
Question

Ko je trenutno na forumu
 

Ukupno su 844 korisnika na forumu :: 4 registrovanih, 0 sakrivenih i 840 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: ILGromovnik, Koridor, M1los, Mercury