![]() |
![]() ![]() |
![]() |
-MPC User- |
![]()
Post
#1
|
Goście ![]() |
Jakiś user udostępnił skrypt na pewnym forum i część użytkowników twierdzi, że jest on podatny na SQLi.
Nie znam się na php, ale chciałbym wtłoczyć ten skrypt do pewnej strony, ale nie wiem czy jest on bezpieczny.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
Zwróć uwagę na to zapytanie:
A co jeśli potrafię spreparować $_SESSION['id'] ? Mogę wrzucić dowolny tekst, który nie zostanie wyczyszczony np mysql_escape_string -------------------- Manual prawdę Ci powie.
|
|
|
-MPC User- |
![]()
Post
#3
|
Goście ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
Zwróć uwagę na to zapytanie:
A co jeśli potrafię spreparować $_SESSION['id'] ? Mogę wrzucić dowolny tekst, który nie zostanie wyczyszczony np mysql_escape_string Proszę Cię, nie pogrążaj się. Czy ludzie naprawdę nie mają pojęcia jak działają sesje? Spreparowanie danych to atak typu Session Poisoning - ale ten atak może wystąpić tylko wtedy, kiedy programista pisze idiotyczny kod jak:
Co do skryptu (zakładam, że $cena może być zmieniona):
Zagrożeniem jest cena, zobacz co się stanie gdy damy ujemną: Kod mysql> insert into abc values (5); Query OK, 1 row affected (0.00 sec) mysql> select * from abc; +------+ | cena | +------+ | 5 | +------+ 1 row in set (0.00 sec) mysql> update abc set cena=cena--5; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from abc; +------+ | cena | +------+ | 10 | +------+ 1 row in set (0.00 sec) Jeśli $czas można zmienić też, pewnie efektem niepożądanym byłby fakt, że silver_expire jest zmienione na inną wartośc niż zakładana. Opisz dokładniej które dane są zmienne. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
@UP
a skąd pewnośc, że w ten sposób nie jest Tworzone ID? Może zaufać użytkownikowi... To pierwszy błąd jaki rzucił mi się w oczy więc go o nim informuję, więc nie rzucaj odrazu miesem... -------------------- Manual prawdę Ci powie.
|
|
|
-MPC User- |
![]()
Post
#6
|
Goście ![]() |
Proszę Cię, nie pogrążaj się. Czy ludzie naprawdę nie mają pojęcia jak działają sesje? Spreparowanie danych to atak typu Session Poisoning - ale ten atak może wystąpić tylko wtedy, kiedy programista pisze idiotyczny kod jak:
Co do skryptu (zakładam, że $cena może być zmieniona):
Zagrożeniem jest cena, zobacz co się stanie gdy damy ujemną: Kod mysql> insert into abc values (5); Query OK, 1 row affected (0.00 sec) mysql> select * from abc; +------+ | cena | +------+ | 5 | +------+ 1 row in set (0.00 sec) mysql> update abc set cena=cena--5; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from abc; +------+ | cena | +------+ | 10 | +------+ 1 row in set (0.00 sec) Jeśli $czas można zmienić też, pewnie efektem niepożądanym byłby fakt, że silver_expire jest zmienione na inną wartośc niż zakładana. Opisz dokładniej które dane są zmienne. Zadne dane nie są wprowadzane przez użytkownika i nie ma on do nich dostępu. Więc jak cena może być minusowa? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 821 Pomógł: 111 Dołączył: 11.09.2006 Skąd: Biała Podlaska Ostrzeżenie: (0%) ![]() ![]() |
Zadne dane nie są wprowadzane przez użytkownika i nie ma on do nich dostępu. Więc jak cena może być minusowa? Ja podchodzę do takiego wniosku, że dane powinny być zabezpieczone "na wszelki wypadek" przed zmianami. Czasem nam się wydaje, że czegoś użytkownik i tka nie może zmodyfikować, a przychodzi taki delikwent i to robi (świadomie lub nie). Zabezpieczenie skryptów PHP to podstawa! -------------------- |
|
|
-MPC User- |
![]()
Post
#8
|
Goście ![]() |
Jak może zmienić zmienną która jest zdeklarowana wewnątrz skryptu?
Nawet jak dla mnie to dziwne ![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
@UP a skąd pewnośc, że w ten sposób nie jest Tworzone ID? Może zaufać użytkownikowi... To pierwszy błąd jaki rzucił mi się w oczy więc go o nim informuję, więc nie rzucaj odrazu miesem... Co tutaj jest do ufania użytkownikowi? Zatrucie sesji jest możliwe tylko wtedy, kiedy programiasta pisze idiotyczny kod. Równie dobrze mozna powiedzieć "co *jeśli* potrafię uzyskać dostęp do serwera?". Dane sesyjne nie są (tfu, nie powinny być) ustawiane wprost od użytkownika. Jeśli ceny ani casu nie da się zmienić, to ten kawałek kodu jest w 100% bezpieczny. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
można poczytać ciekawe rzeczy
![]() http://ha.xxor.se/2011/09/local-session-po...php-part-1.html czyli generalnie i tak wszystko zależy, od konfiguracji serwera. Zatrucie sesji jest możliwe tylko gdy serwer nie jest odpowiednio skonfigurowany wówczas skrypt taki jaki przedstawił autor może sprawić problemy. Osobiście nie ufam żadnym zmiennym (to że teraz atak jest nie możliwy nie znaczy, że za 3 dni nie będzie nowej luki) tym bardziej jeżeli potrzebuje inta to zwykłe rzutowanie w zupełności wystarcza. -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.08.2025 - 23:51 |