Wykrywanie podatności SQL Injection

bagsiu

Użytkownik
Dołączył
Wrzesień 16, 2009
Posty
35
Witam ; ]
Moja jakaś tam stara strona : http://83.21.14.90/~mstr/
Na pewno jest podatna na SQL injection gdyż, nie używałem jakiś zabezpieczeń :)

Teraz mam pytanie, jak wykryć podatność na SQL injection?
Wiem że jest metoda dodania po id podstrony apostrofu.
np.
http://83.21.14.90/~mstr/index.php?show=3'
I jeśli wyświetli błąd strona jest podatna.
No właśnie , mi błędu nie wyświetla , zamiast jakiegokolwiek błędu SQL wywala mi podstrone z formularzem shoutbox'a ; /
Co zrobić?

Dopiero tydzień temu wziąłem się za sql injection wiec prosze o wyrozumiałość ^^
 

hxv

Były Moderator
Dołączył
Sierpień 9, 2006
Posty
797
Jeśli na serwerze włączone jest addslashes to apostrof nic nie da, dane będą automatycznie filtrowane. Można wtedy wykonać jedynie blind SQL injection (o ile zmienna w zapytaniu jest liczbą, tutaj wydaje mi się, że nie jest).
 

bagsiu

Użytkownik
Dołączył
Wrzesień 16, 2009
Posty
35
Nie ma innych sposób na wykrycie podatności ? :)
Addslashes trzeba włączyć w jakimś pliku czy to funkcja którą wystarczy umieścić w kodzie ?
Jesli funkcja , to nie umieszczałem niczego podobnego w kodzie :p
 

hxv

Były Moderator
Dołączył
Sierpień 9, 2006
Posty
797
Sorry, napisałem addslashes a chodziło mi o magic quotes :/ Domyślnie są one włączone w php, można to zmienić w php.ini, .htaccess lub przez użycie funkcji ini_set() (o ile nie jest zablokowana).
Żeby sprawdzić czy skrypt jest podatny można np. spróbować wykonać SQL Injection w taki sposób, aby wynik się nie zmienił a potem tak, żeby go zmodyfikować (wiem, zamotałem).
Np. jeśli zapytanie wygląda tak (pogrubienie - zmienna którą możemy modyfikować):
SELECT * FROM `x` WHERE `a` = '1'
najpierw musimy zmodyfikować zapytanie tak, żeby nie zmienić jego wyniku, np.:
SELECT * FROM `x` WHERE `a` = '1' and 1=1--'
a potem tak, żeby go zmienić, np.:
SELECT * FROM `x` WHERE `a` = '1' and 1=2--'
Jeśli po pierwszej zmianie dostaniemy taki sam wynik, jak przy normalnym zapytaniu a druga zmiana zwróci inny wynik/błąd to skrypt prawdopodobnie jest podatny. Tak samo można znajdywać blind SQLi.
 

widmo17

Były Moderator
Dołączył
Lipiec 16, 2007
Posty
1089
Pamiętaj, że mogą być też reguły w apache, które z całego urla robią góffno : > Mod_security przykładowo robi takie sztuczki.
 

bagsiu

Użytkownik
Dołączył
Wrzesień 16, 2009
Posty
35
Hmm.
http://127.0.0.1/~mstr/index.php?show=14' and 1=2 /*'
Dałem tak .
Zrobiłem jak mówił hxv ...
I dalej żadnego błędu nie wywala.
Widmo17 :
Można jaśniej ? :d Można jakoś wyłączyć to mod_security ?
Jak coś mam Krasnala 2.7 :p
 
Ostatnia edycja:
Do góry Bottom