Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Zabezpieczenie mysql
Forum PHP.pl > Forum > Przedszkole
Kloc
To zadanie dla prawdziwych hakierów.
W bazie danych mam ukryty klucz, aby do niego się dostać trzeba złamać login i hasło.
Jest to pierwszy poziom trudności- czyli formularz bez filtracji itp. Osoba która dokona odkrycia kluczu jest proszona o podanie go tu.
Jeśli wszystko będzie się zgadzać to dodam jakieś zabezpieczenie i poproszę o to samo smile.gif.
Zadanie ma na celu znalezienia metody nie do złamania biggrin.gif

Zapytanie wygląda tak, a hasło jest w md5:
  1. SELECT `login`,`haslo` FROM `---` WHERE `login` = '".$login."' AND `haslo` = '".$haslo."'


http://www.kloc.ugu.pl/index.php
SmokAnalog
Klucz to 123456789.
Kloc
Zgadza się smile.gif
Teraz została dodana funkcja filtrująca login i hasło, a wygląda ona tak:
  1. function filtruj($filtracja){
  2. $filtracja = stripslashes($filtracja);
  3. $filtracja = addslashes($filtracja);
  4. $filtracja = str_replace("<", "!", $filtracja);
  5. $filtracja = str_replace(">", "!", $filtracja);
  6. return $filtracja;
  7. }


Login, hasło i klucz zostały zmienione, a SmokAnalog wygrywa POMÓGŁ biggrin.gif
Damonsson
Właśnie pisałem, czy jesteś pewny, że tak wygląda zapytanie, chyba akurat zmieniałeś tongue.gif

POL22033UE
Kloc
Damonsson hakierze wszystkich hakierów wygrywasz POMÓGŁ biggrin.gif
No ale lecimy dalej. Teraz dodałem takie cuś:
  1. preg_match('#^[a-zA-Z0-9]*$#D', $_POST['login']) AND preg_match('#^[a-zA-Z0-9]*$#D', $_POST['haslo'])


Przez formularz nie przejdą żadne znaki po za literami i liczbami.
Hasło, login i klucz są nowe, kto pierwszy rozwali system ph34r.gif ?
viking
Tak z ciekawości po co to sprawdzasz? Dlaczego np uniemożliwiasz użytkownikowi podanie bardziej zaawansowanego hasła i które i tak powinno być potraktowane jakąś funkcją crypt. Zapytanie preparowane i ograniczany tylko login.
Damonsson
Cytat(Kloc @ 14.10.2014, 12:46:05 ) *
Damonsson hakierze wszystkich hakierów wygrywasz POMÓGŁ biggrin.gif
No ale lecimy dalej. Teraz dodałem takie cuś:
  1. preg_match('#^[a-zA-Z0-9]*$#D', $_POST['login']) AND preg_match('#^[a-zA-Z0-9]*$#D', $_POST['haslo'])


Przez formularz nie przejdą żadne znaki po za literami i liczbami.
Hasło, login i klucz są nowe, kto pierwszy rozwali system ph34r.gif ?

Głowy sobie uciąć nie dam, ale wydaje mi się, że już tutaj nikt nic nie zrobi z poziomu sql injection, więc możesz zakończyć poszukiwania.
Kloc
Też mi się tak zdaje, z powyższych przykładów widać jak MySql jest podatne na ataki co da się jakoś zabezpieczyć.
Jeśli jest się upartym można przy tym zostać, ale lepiej jest przejść na PDO.
Dzięki za pomoc wink.gif
nospor
Do escapowania danych w mysql_ uzywa sie mysql_real_escape a nie zadne addslashes.

Jesli po tej zamianie, ci sie wlamali, to byloby milo jakby napisali jak.

Rownie to:
$filtracja = stripslashes($filtracja);
powinno zniknac.

I to rowniez:
$filtracja = str_replace("<", "!", $filtracja);
$filtracja = str_replace(">", "!", $filtracja);
ma sie nijak do filtracji danych do bazy danych
wpaski
mogę się dowiedzieć w jaki sposób mimo addslashes udało się uzyskać kod?
Damonsson
Wystarczy pamiętać, żeby po prostu nie używać addslashes ph34r.gif mysql_real_escape już jest ok.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.