Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][sql]sortowanie, czemu nie działa?
Oscar_83
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 10.05.2007

Ostrzeżenie: (0%)
-----


Witam miałem sortowanie działało, a teraz nie wiem czemu nie działa, dzisiaj zauważyłem że nie działa (nie wiem ile czasu tak już jest), nie mogę dojść czemu to nie działa, a oto kod:
  1. <?php
  2. $polaczenie = mysql_connect("localhost", "xxx", "xxx") or die("Sprawdź połączenie z serwerem");
  3. mysql_select_db("mzukowski",$polaczenie);
  4. mysql_query('SET NAMES latin2');
  5.  
  6. empty($_GET['sort'])?$sort='nazwisko':$sort=$_GET['sort'];
  7. $query = 'SELECT * FROM zawodnicy ORDER BY "'.$sort.'"' ;
  8. $results = mysql_query($query, $polaczenie) or die (mysql_error());
  9. $num_zawodnicy = mysql_num_rows($results);
  10.  
  11. $zawodnicy = '
  12. <h2><center><br><font face="lucida console">ZAWODNICY W DRUŻYNIE</font><br><br></center></h2>
  13. <table width="90%" border="1" cellpadding="2" cellspacing="2" align="center" bgcolor="FFFFFF">
  14.  <tr>
  15.  <th><font color="416F76">L.p</font>
  16.  <th><a href="zawodnicy2.php?sort=imie" style="text-decoration: none">Imię</a></th>
  17.  <th><a href="zawodnicy2.php?sort=nazwisko" style="text-decoration: none">Nazwisko</a></th>
  18.  <th><a href="zawodnicy2.php?sort=pozycja" style="text-decoration: none">Pozycja</a></th>
  19.  <th><a href="zawodnicy2.php?sort=wiek" style="text-decoration: none">Wiek</a></th>
  20.  <th><a href="zawodnicy2.php?sort=narodowosc" style="text-decoration: none">Narodowosc</a></th>
  21.  <th><a href="zawodnicy2.php?sort=bramki" style="text-decoration: none" title="Goli w tym sezonie">Gole</a></th>
  22.  <th><a href="zawodnicy2.php?sort=bramki_w_kar" style="text-decoration: none" title="Goli w karierze">G_k</a></th>
  23.  <th><a href="zawodnicy2.php?sort=hattrickow" style="text-decoration: none" title="Hattricków w karierze">H</a></th>
  24.  <th><font color="416F76">Uwagi</th></font>
  25.  </tr>
  26. ';
  27. $lp = 0;
  28. $wiek_sr = 0;
  29.  
  30. while($row=mysql_fetch_assoc($results)){
  31. $lp++;
  32. $wiek_sr += $row['wiek'];
  33. $zawodnicy .= '
  34. <tr>
  35. <td>'.$lp.'</td>
  36. <td>'.$row['imie'].'</td>
  37. <td>'.$row['nazwisko'].'</td>
  38. <td>'.$row['pozycja'].'</td>
  39. <td style="text-align: center;">'.$row['wiek'].'</td>
  40. <td>'.$row['narodowosc'].'</td>
  41. <td style="text-align: center;">'.$row['bramki'].'</td>
  42. <td style="text-align: center;">'.$row['bramki_w_kar'].'</td>
  43. <td style="text-align: center;">'.$row['hattrickow'].'</td>
  44. <td>'.$row['uwagi'].'&nbsp;</td>
  45. </tr>
  46. ';
  47. }
  48. ?>


Bardzo bym prosił o sprawdzenie kodu, może ktoś wyłapie co tu jest nie tak, ja już nie mam siły.. :/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
-Wieviór-
post
Post #2





Goście







Cytat(viraptor @ 11.09.2007, 23:56:41 ) *
A może by tak jeszcze jakiś escape tego $_GET['sort']? Inaczej ktoś Ci tam doda UNION 'inna tabela' a potem INTO OUTFILE i zbierze całą bazę danych... Trochę bezpieczeństwa (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


Napisz coś więcej na ten temat albo zarzuć jakimś linkiem, chętnie się dowiem...
Go to the top of the page
+Quote Post
viraptor
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


Cytat(Wieviór @ 12.09.2007, 06:27:58 ) *
Napisz coś więcej na ten temat albo zarzuć jakimś linkiem, chętnie się dowiem...

Jako $sort (a właściwie $_GET['sort']) wrzucasz w skrypt:
kolumna`,(BARDZO FAJNY SELECT...),`kolumna

Chodzi po prostu o bardziej zakręcone injection. Z UNION troche przesadziłem, bo tu nie przejdzie, ale można inne rzeczy zrobić. No to w przykładach pewnie najlepiej:

  1. SELECT ... ORDER BY `kol`,(SELECT 1 INTO OUTFILE 'plik_do_zebrania_z_serwera'),`kol`;

Zrzuci wynik całego oryginalnego zapytania do tego pliku.

  1. SELECT kolumna_z_dwoma_wartościami_42 AS kol, inna_kolumna ORDER BY `kol`,(SELECT IF(coś_na_wybranie_pierwszej_wartości_42 AND (SELECT password FROM users LIMIT 1)>"abcd", 1, 2)),`kol`;

Posortuje powtórzenia w sposób... odpowiedni (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) po kilku testach można znaleźć odpowiednie hasło / hasha / ... na podstawie ułożenia rekordów.

Można cały dzień sypać przykładami co da się zrobić z injectem do ORDER BY... - po prostu do bazy NIGDY nie powinna pójść nieescapowana wartość.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 07:21