Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP] Ataki SQL
Xart
post
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Witam tak się ostatnio zastanawiam bo mam pewien niby przestarzały, banalny skrypt do logowania w którym nie ma filtrowania danych ale itak wydaje mi się że nie dałoby się zalogować na admina bez hasła (IMG:style_emoticons/default/biggrin.gif)

Wygląda on tak:

  1. <?
  2. include("config.php");
  3.  
  4. $login=$_POST['USRlogin'];
  5. $haslo=$_POST['USRhaslo'];
  6.  
  7. $wynik = mysql_query("SELECT * FROM users WHERE login='".$login."'") or die("<center>błąd w pytaniu</center>");
  8. $rekord = mysql_fetch_assoc($wynik);
  9. if(md5($haslo)==$rekord['haslo']){
  10. $log=md5("zalogowanyOKzalogowany");
  11. $news=$rekord['news'];
  12. $page=$rekord['page'];
  13. $zmiany=$rekord['zmiany'];
  14. session_register('zmiany');
  15. $user=$rekord['user'];
  16. $galeria=$rekord['galeria'];
  17. session_register('galeria');
  18. ?>
  19. <frameset cols="175px,*">
  20. <frame src="menu.php"/>
  21. <frame src="pusty.html" name='okno'/>
  22. </frameset>
  23. <?
  24. }else{
  25. header("Location: index.php");
  26. };
  27. ?>


Atak na zmiane zapytania odpada bo nic nie wniesie.
union select nic nie zrobi bo dane nie są nigdzie wyświetlane
zakomentować w kodzie nie ma zbytnio czego bo tylko pobiera użytkownika
wyświetlenia niczego też nie ma jak dokleić...
za hasło nie można podać żadnego kodu bo if(md5($haslo)==$rekord['haslo']) zakoduje go na md5

Ogólnie chyba nic się z tym nie da zrobić... Nie ma żadnego sposobu obejścia. Czyżby to if(md5($haslo)==$rekord['haslo']) było lepszym rozwiązaniem od filtrowania ITP ?
Macie jakieś pomysły na obejście tego mhm ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


A da to dokładnie całą możliwość wpisania innego zapytania, np update, gdzie w pole loginu wpisujesz:

Kod
admin'; UPDATE uzytkownicy SET haslo=md5("nowehaslo") WHERE login='admin


Jeżeli wywali błąd, znaczy ze niepoprawna nazwa tabeli, lub kolumny hasło, wystarczy próbować aż się trafi na nazwę tabeli i nazwę kolumny. W ten sposób mogę podmienić twoje hasło i się zalogować jako administrator.

O wszelkiego rodzaju drop table czy innych możliwościach nie wspomnę, bo tutaj ogranicza nas tylko nasza wiedza albo uprawnienia usera który łączy się do mysql. Bo jest to klasyczny błąd.

Tutaj możesz poczytać jak się przed tym chronić: Temat: SQL Injection Insertion

PS. jeżeli przy logowaniu masz takiego babola, podejrzewam że cała strona jest dziurawa jak sito, i lepiej nie podawaj linku, i zrób sobie kopię zapasową póki jeszcze możesz i jak najszybciej popraw te błędy.
Go to the top of the page
+Quote Post

Posty w temacie


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 10:05