Forum Haking & Security. Packetstorm Strona Główna
RejestracjaSzukajFAQUżytkownicyGrupyGalerieZaloguj
[bugs] najczestsze bledy i troche o nich

 
Odpowiedz do tematu    Forum Haking & Security. Packetstorm Strona Główna » Security Zobacz poprzedni temat
Zobacz następny temat
[bugs] najczestsze bledy i troche o nich
Autor Wiadomość
WhoAmI
Admin



Dołączył: 13 Lip 2008
Posty: 68
Przeczytał: 0 tematów

Ostrzeżeń: 0/6
Skąd: Się biorą dzieci?
Płeć: Mężczyzna

Post [bugs] najczestsze bledy i troche o nich
[czemu w security a nie w programowanie ? wkoncu security sie w znacznym stopniu opiera na szukaniu bledow/bugow w programach]

Topic ten sluzyl bedzie glownie do dyskusji oraz zrobienia "bazy" najczestszych bledow ktore popelniaja programisci, oraz metod ich wykozystania. Proponuje wrzucac w ten topic blad wraz z nazwa, przykladem, oraz krotkim opisem (np czym grozi popelnienie tego bledu). Bede sie staral te ktore nie wystapily jeszcze przeklejac do tego posta. Stworzy sie w ten sposob baza bugow, z ktorej poczatkujacy i nie tylko beda mogli pozniej kozystac (ofc w celu nauczenia sie jak ich nie robic i poprawienia stylu programowania ;ppppp)

oczywiscie nie chodzi tutaj tylko o bledy popelniane w C, ale o wszystkie ;>

Bug base

1. buffer overflow (przepelnienie bufora)
podal Gynvael Coldwind
kod z bledem:
Kod:
int main(void)
{
  char buffer[256];
  gets(buffer); /* blad! */
  return 0;
}


Blad polega na zapisaniu do buffora "buffer" wiecej niz 256 bajtow danych, co spowoduje nadpisanie (w tym wypadku) stosu i umozliwi wykonanie nieporzadanego kodu pochodzacego z zewnatrz. Zamiast gets powinno sie uzywac fgets(buffer, 256, stdin);. Bled rowniez moze wystapic przy niepoprawnym uzyciu funkcji sprintf, strcpy, strcat (powinno sie uzywac snprintf, strncpy, strncat)


Post został pochwalony 0 razy
Czw 5:51, 17 Lip 2008 Zobacz profil autora
Papryk




Dołączył: 13 Lip 2008
Posty: 4
Przeczytał: 0 tematów

Ostrzeżeń: 0/6

Płeć: Mężczyzna

Post
Ciągi formatujące są dosyć częstym błędem popełnianym przez programistów. Szczególnie polega on na lenistwie i jak najszybszym napisaniu programu, czego potem skutkami są bugi, jednym z nich są właśnie ciągi formatujące. Błąd który tu opiszę polega na złym zastosowaniu funkcji "printf" w języku C. Jak wiele z was pewnie wie (albo i nie wie Razz ), funkcję printf stosujemy do wyświetleniu jakiegoś ciągu (string) z podanym parametrem np. znaków, dziesiętny, szestnastkowy itd. Każdemu takiemu ciągu odpowiada parametr i są to np.

%s - dla ciągu znaków
%d - dla ciągu dziesiętnego
%x - dla szesnastkowych

No dobra, ale to chyba wie każdy kto choć trochę zna język C (a mało jest takich co nie zna Razz ), więc teraz czas na to jak taki ciąg nadużyć. Wielu programistów może z przemęczenia, albo z lenistwa popełnia katastrofalny błąd i zamiast pisać:

Kod:
printf("%s", kerth)


pisze:

Kod:
printf(kerth)


Na pierwszy rzut oka nie widać żadnych większych strat z takiego zapisy, bo gdy np. char kerth="hello world", wtedy po kompilacji program bez żadnych problemów wyświetly "hello world", ale co się stanie gdy pod zmienną kerth podstawimy, jakiś parametr np. %x, czyli teraz kerth wygląda np. tak: char kerth="world%x" i efekty są takie:

Kod:
worldbffff2a1


natomiast przy poprawnym sposobie wygląda tak:

Kod:
world%x


Analizując pierwszy przykład program nie ma określonej zmiennej na której ma wykonać parametr "%x", dlatego bierze pierwsze co leży na stosie i pokazuje nam to w postaci szesnastkowej (bo do tego służy ten parametr). Tym samym sposobem teraz możemy podejrzeć cały stos, ale to nie o to nam chodzi. Głównym daniem dla intruza jest jednak parametr %n, który odwrotnie do parametru %s dzięki któremu możemy odczytawać z pamięci, to ten posłuży nam do zapisywania. No i właśnie dzięki temu możemy dowolny adres, nadpisać swoim, który w czasie wykonywania programu wykona wszystko czego zapragniemy Wesoly . Oczywiście wymaga to wiele pracy i trudu z nadpisaniem odpowiedniego adresu (np. zmiennej środowiskowej z shellcodem Razz ), no ale to ma być tylko bug base, a nie FAQ jak pisać exploity. Chyba jasne jest, że aby uniknąć tego bugu wystarczy dokładnie określać parametry, a nie iśc na łatwiznę.


Post został pochwalony 0 razy
Czw 9:25, 17 Lip 2008 Zobacz profil autora
Pastinho37




Dołączył: 18 Mar 2014
Posty: 4
Przeczytał: 0 tematów

Ostrzeżeń: 0/6
Skąd: Dobiegniew

Post
o dzieki!


Post został pochwalony 0 razy
Wto 22:29, 18 Mar 2014 Zobacz profil autora
Elosator_59




Dołączył: 25 Mar 2014
Posty: 5
Przeczytał: 0 tematów

Ostrzeżeń: 0/6
Skąd: Słomniki

Post
Smile Smile Smile


Post został pochwalony 0 razy
Wto 23:21, 25 Mar 2014 Zobacz profil autora
Wyświetl posty z ostatnich:    
Odpowiedz do tematu    Forum Haking & Security. Packetstorm Strona Główna » Security Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do: 
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Design by Freestyle XL / Music Lyrics.
Regulamin