Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php+sql]SQL INSERTION - UPDATE
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Jest to pytanie abym poznał o co chodzi w SQL INJECTION

Mam taki plik

  1. <?php
  2. mysql_connect('localhost', 'root', '');
  3. mysql_select_db('testowa');
  4. $query = &#092;"UPDATE uzytkownicy SET login='\".$_GET['user'].\"'\";
  5. mysql_query($query) or die(mysql_error());
  6. ?>


i w bazie jeden rekord
i jesli odpale link
example0x.php?user=daniel1302',%20pass='Daniela

to login zmienia na
daniel1302', pass='Daniel

Dlaczego nie zmienia hasła

Ten post edytował Piniek 20.04.2008, 11:50:15
Powód edycji: Dodanie odpowiedniego tagu do tematu. Proszę żeby następnym razem autor sam go dodawał.
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #2





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


a nie lepiej tak zrobić
  1. <?php
  2. mysql_connect('localhost', 'root', '');
  3. mysql_select_db('testowa');
  4. $user = addslashes($_GET['user']); 
  5. $pass = addslashes($_GET['pass']);
  6. $query = "UPDATE uzytkownicy SET login='".$user."', pass='".$pass."'";
  7. mysql_query($query) or die(mysql_error());
  8. ?>

i wtedy adres: index.php?user=user&pass=pass
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@Mlodycompany: ale kiedy autor tematu chce właśnie sobie "popsuć" bazę winksmiley.jpg

Być może magic_quotes są włączone na serwerze
Dodaj sobie echo $query; i zobacz jakie jest wykonywane zapytanie

Ten post edytował Crozin 19.04.2008, 20:27:59
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #4





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


no wiesz. chce nie chce ja podalem mu skrypt ktory dziala w 100%
Go to the top of the page
+Quote Post
daniel1302
post
Post #5





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Mlodycompany, nie o to mi chodziło, chciałem sprawdzić jak taki atak działa


UPDATE uzytkownicy SET login='daniel1302\', pass=\'Daniela'
takie zapytanie zostało zwrócone, czyli nie muszę zabezpieczać na moim serwerze zmiennych
Go to the top of the page
+Quote Post
l0ud
post
Post #6





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


daniel1302, NIGDY nie ufaj magic_quotes. To, że u Ciebie na serwerze działa to poprawnie, nie oznacza, że gdzie indziej będzie tak samo. Poza tym później napotkasz się z problemami z wydobywaniem danych z bazy, bo nie do końca wiadomo będzie kiedy użyć stripslashes() (i po co, skoro nie używaliśmy addslashes()?)

Zawsze ręcznie filtruj zmienne wyjściowe.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #7





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


atak dziala normalnie. jest pelno filmow w necie jak takie ataki sa robione.
Go to the top of the page
+Quote Post
daniel1302
post
Post #8





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


Jak jest magic quotes to nieda próbowałem 4 godziny i nic ale atak typu select/unionselect działa
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. <?
  2.  
  3. //z formularza
  4. $_GET['user'] = "test', pass = 'qwerty";
  5.  
  6. $query = "UPDATE uzytkownicy SET login='".$_GET['user']."'";
  7. //UPDATE uzytkownicy SET login='test', pass = 'qwerty'
  8. //SQJ INJECTION zadziała - zmieni sie login,pass
  9.  
  10. //Ale gdy mamy magic_quotes:
  11. //Zmienna z formularza jest escape'owana
  12. $_GET['user'] = "test', pass = 'qwerty";
  13.  
  14. $query = "UPDATE uzytkownicy SET login='".$_GET['user']."'";
  15. //UPDATE uzytkownicy SET login='test', pass = 'qwerty'
  16. //Czyli zostanie zmieniony jedynie login na: test', pass = 'qwerty
  17. //Ale samo haslo nie zostanie zmienione
  18.  
  19. ?>
Tak więc jak widzisz, magic_quotes mogą ochronić czasem słabych programistów winksmiley.jpg No chyba, że Ci jeszcze przed wykonaniem zapytania, użyją na tablicach _POST i _GET stripslashes" title="Zobacz w manualu PHP" target="_manual biggrin.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 05:26