Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL/PHP]Prosty Sql injection
Forum PHP.pl > Forum > Bazy danych > MySQL
Crisu
Witam!
Musze przygotowac ref z bezpieczenstwa baz danych

Chciałem przerobić najproszty przyklad sql injection :

  1. <?php
  2.  
  3.  
  4.    mysql_connect('localhost', 'root', 'xxx')
  5.    or die('blad polaczenia z baza');
  6.  
  7.    mysql_select_db('test');
  8.  
  9.    $name = $_POST['name'];
  10.    $pass = $_POST['pass'];
  11.  
  12.    $zap1 ="select id from users WHERE name='$name' and password='$pass'";
  13.  
  14.  
  15.    echo 'zapytanie: '.$zap1;
  16.    $query = mysql_query($zap1);
  17.  
  18.    var_dump($query);
  19.  
  20.    $row = mysql_fetch_array($query);
  21.  
  22.    var_dump($row);
  23.  
  24.  
  25.    echo '<br />id zalogowanego to : '.$row['id'];
  26.  
  27. //    mysql_close();
  28.  
  29. ?>


  1. <body>
  2. <form action="sqli1.php" method="post">
  3. name: <INPUT TYPE="text" NAME="name" /><br>
  4. pass: <INPUT TYPE="text" NAME="pass" /><br>
  5. <input type="submit" name="submit" value="login">
  6.  
  7. </form>
  8.  
  9. </body>
  10. </html>



W bazie sa wpisy (id,name,password)
Cytat:

1 admin nimda
2 user user


Chcialem na poczatek wykonac zapytanie



  1. SELECT id FROM users WHERE name='admin' /* and password=''



czyli w pole name wpisuje admin' /*
Ale i tak nie przechodzi...
Ktos moze cos doradzic bo siedze nad tym banałem cały dzień...
nospor
Cytat
czyli w pole name wpisuje admin' /*

admin' or 1=1 or 1=1 or '
Crisu
To zapytanko sie przynajmniej nie wywala...
Ale nie jest to do konca o co mi chodzilo, tzn zawsze zwraca id=1
nospor
zapytanie zwraca wszystkie rekordy. To ty pobierasz zawsze pierwszy smile.gif
Crisu
fakt
A czemu to moje nie dziala ? Chyba to jest najbardziej podstawowa metoda z komentarzem reszty sqla?
nospor
do mysql przez mysq_query nie mozna wrzucic komentarza... a przynajmniej mi sie nigdy nie udalo smile.gif
Crisu
troche zgupiałem w tym momencie prawde mówiac...
Z rok temu się w to bawiłem i jestem na 99% pewien ze działało wtedy : )
Dzieki za rade
bełdzio
z komentarzami nie ma problemu, sek w tym, ze musi on zostac zamkniety tzn SELECT * FROM tabelka /* cos jest nie ok, ale juz SELECT * FROM tabelka /* cos */ jest ok smile.gif
Crisu
trafna uwaga z zamknieciem komentarza - pomogło !

To co powiecie na to
http://albi.vxe.pl/2007/02/26/sql-injection/

Pierwszy link z googli

Cytat :
  1. SELECT * FROM articles WHERE category = 'any' OR 1=1--'


Cytat
Jak widać, na końcu pojawiły się dwa myślniki. Mają one na celu przekazanie do mysql, że reszta zapytania my być zignorowana (-- to znak komentarza w mysql).


U mnie motyw z admin' or 1=1 -- nie przechodzi ...
bełdzio
Cytat(Crisu @ 3.03.2009, 22:53:35 ) *
  1. SELECT * FROM articles WHERE category = 'any' OR 1=1--'


przed i po "--" musza byc spacje
Crisu
Cytat(bełdzio @ 3.03.2009, 23:30:23 ) *
przed i po "--" musza byc spacje


Diabeł tkwi w szczegółach
saves the day : )
nospor
dziwne te szczegóły. jak pisałem wczesniej mi tam nigdy nie zadziałało wstawienie tych komentarzy, zarówno -- (ze spacjami) jak i /**/
Zawsze zapytanie sie wywala. Moze to zalezy od ustawien bazy, a moze od silnika generującego zapytania:mysql_query, czy adodb, czy pdo, czy inne
Crisu
to jeszcze takie pytanko bo na necie nie widze jednoznaczej odpowiedzi
Do mysql_query da sie przekazać więcej niż jedno zapytanie (np wstrzyknąć jakiegos delete/inserta) .
Z moich testów wynika, że nie ale może znów zapomniałem o jakieś spacji : )
ostrylg
Poczytaj

http://www.techonthenet.com/sql/union.php
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.