Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]unserialize
Forum PHP.pl > Forum > PHP
kyloren
Moj kod wyklada tak:
  1. <?php
  2. class User
  3. {
  4. public $username;
  5. public $isAdmin;
  6.  
  7. public function PrintData(){
  8. if ($this->IsAdmin){
  9. echo $this->username . " is an admin\n";
  10. }
  11. else {
  12. echo $this->username . " is not an admin\n";
  13. }
  14. }
  15. }
  16. //$obj = new User();
  17. //$obj->username='Pawel';
  18. //$obj->IsAdmin=True;
  19. //$obj->PrintData();
  20. //echo serialize($obj);
  21. $obj=unserialize($_POST['serial']);
  22. //var_dump($obj);
  23. $obj->PrintData();
  24.  
  25. ?>

Przy wyslaniu zadania do serwera: curl -XPOST -d "serial=O:4:"User":2:{s:8:"username";O:8:"ReadFile":1:{s:8:"filename";s:11:"/etc/passwd";}s:7:"IsAdmin";b:1;}" 127.0.0.1/unserialize.php
dostaje blad:
[Sat Sep 19 08:09:52 2020] PHP Notice: unserialize(): Error at offset 0 of 89 bytes in /home/sysagent/php/unserialize.php on line 21
[Sat Sep 19 08:09:52 2020] PHP Fatal error: Uncaught Error: Call to a member function PrintData() on bool in /home/sysagent/php/unserialize.php:23
Stack trace:
#0 {main}
thrown in /home/sysagent/php/unserialize.php on line 23
[Sat Sep 19 08:09:52 2020] 127.0.0.1:43500 [500]: POST /unserialize.php - Uncaught Error: Call to a member function PrintData() on bool in /home/sysagent/php/unserialize.php:23
Stack trace:
#0 {main}
thrown in /home/sysagent/php/unserialize.php on line 23
[Sat Sep 19 08:09:52 2020] 127.0.0.1:43500 Closing

Gdzie lezy blad w moim kodzie?
kyloren
Cytat(viking @ 19.09.2020, 08:41:45 ) *


Dziekuje, ale chyba dalej nie rozumiem w czym polega problem.
viking
W pliku w którym robisz unserialize masz zdefiniowaną klasę User? Ogólnie to unserilize z post jest niebezpieczne.
kyloren
Cytat(viking @ 19.09.2020, 11:48:37 ) *
W pliku w którym robisz unserialize masz zdefiniowaną klasę User? Ogólnie to unserilize z post jest niebezpieczne.


Wydaje mi sie w POSTcie wysylam obiekt "User"
curl -XPOST -d "serial=O:4:"User":2:{s:8:"username";O:8:"ReadFile":1:{s:8:"filename";s:11:"/etc/passwd";}s:7:"IsAdmin";b:1;}" 127.0.0.1/unserialize.php
Tak wiem ze to nie jest niebezpieczne. Chce przetestowac konsekwencje
viking
No tak. Ale wysyłasz properties. Metod nie i nie da się. Żeby odtworzyć php musi wiedzieć jak wygląda te klasa więc musi np być dostępna dla autoloadera.
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.