Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sql injection - dlaczego?
Forum PHP.pl > Forum > PHP
john_doe
w niezabezpieczonym skrypcie przed SQL Injection pakuje w pole login takie coś

' ; drop table table1;'

zapytanie SQL

  1. <?php
  2. $query = 'SELECT name, surname, login, haslo, poziom FROM users
  3.              WHERE login = '."'". $_POST['login']."'";
  4. ?>


gdy zapodam to wszystko przez przeglądarkę tabela table1 nie zostaje zdropowana, natomiast jeśli wyprintuje to zapytanie a potem wkleje np do phpMyAdmin i zapuszcze to tabelka się dropuje
wookieb
Bo mysql_query wykonuje tylko jedno zapytanie. i jezeli oddzielisz je srednikiem to to nic nie da.
mike
Ponieważ do wykonania tego zapytania stosujesz zapewne funkcję mysql_query(), która nie potrafi wykonywać wielu zapytań
john_doe
ok a czy PDO potrafi ?
erix
Temat: SQL_Injection_Insertion

Chyba nie ma co komentować.
mike
Cytat(erix @ 27.05.2009, 13:32:05 ) *
Temat: SQL_Injection_Insertion

Chyba nie ma co komentować.
Masz rację. Nie ma co komentować tego, że nie czytasz wątku na który odpisujesz tongue.gif
john_doe
erix, wiem, że jest temacik przypięty o SQL Injection.
Ale pytałem o coś innego. Masa ludzi krytykuje skrypty, że są podatne na "ZASTRZYK" a przy użyciu mysql_query to nie kosi.
I w przypiętym tego nie ma.
phpion
Cytat(john_doe @ 27.05.2009, 13:40:42 ) *
przy użyciu mysql_query to nie kosi.

Jesteś w błędzie. Poza tym SQL Injection nie ma na celu dołożenia kolejnego zapytania (jak próbujesz) tylko modyfikacja aktualnego czyli np. z:
  1. SELECT * FROM tabela WHERE login='admin'

tworzone jest:
  1. SELECT * FROM tabela WHERE login='admin' OR 1=1

Rozumiesz teraz zasadę działania?
john_doe
rozumiem phpion po części, bo Twój przykład zwróci wszystkich userów z db. ale jak atakujący pozna wynik tego zapytania skoro przy logowaniu np. koder da warunek, że "loguj jeśli count(*) z tego zapytania == 1
nospor
wystarczy ze koles oprocz OR 1=1 dolozy jeszcze limit 1 tongue.gif
john_doe
nospor kiedyś mi pomogłeś z $_GET i SQL Injection przy jednym projekcie. moc z Tobą smile.gif
ale zobacz co da temu komuś limit 1 skoro przez to zwróci tylko jeden wiersz? a chciałby wszystkie? no chyba, że akurat na 1szym miejscu będzie konto admina smile.gif

P.S co z PDO i wielokrotnym zapytaniem. Czy działa tak samo jak mysql_query?
nospor
Cytat
no chyba, że akurat na 1szym miejscu będzie konto admina
no wlasnie, oto chodzi. Sek w tym, ze oprocz 1=1 on moze zapodac konkretny rekord, i wowczas zawsze trafi na admina.

Ale sql injection to nie tylko zalogowanie sie. to masa innych rzeczy. w necie masz tego pelno
john_doe
nospor mam ogromną prośbę. Spójrz proszę na mój wczorajszy wątek

Temat: czy_takie_sposob_jest_dobry

logowanie na mssql`u.
do tych zapytań dodałem dziś addslashes();

wypowiedz się smile.gif
Crozin
Jeżeli korzystasz z PDO to skorzystaj z PDOwatych bindValue().
erix
Cytat
Nie ma co komentować tego, że nie czytasz wątku na który odpisujesz

Jest już wątek o tym, to na chorobę 2x? tongue.gif
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.