Link challenge
Source code
source code
Phân tích
Vì tên chall là “slipping beauty” nên mình thử dùng file upload symlink zip nhưng không thành công vì zip wrapper sẽ không đọc được symlink zip nên mình sẽ tiếp cận theo hướng khác.
Từ wu này ta thấy được 1 thứ thú vị : By default, PHP stores its sessions in a serialized format in the directory /var/lib/php/sessions, in a file named sess_[session ID]
Vậy nếu ta lợi dụng hàm copy để copy nội dụng file upload exploit.zip
với tên file đc zip là ../../../../var/lib/php/session/sess_myphpsseid
nhằm mục đích ghi file ở bên phía server thì sao? Để làm được điều đó thì ta cần tìm 1 tool để có thể zip file chứa các chacracter đặc biệt như /
hay .
Sau 1 hồi search mình tìm được một tool trên github
Tiếp theo ta xem cách PHP lưu session:
php session file
Ok thế file session t cần tạo sẽ có nội dung là uid|s :5 : "admin"
Để ý rằng file name sẽ bị thêm 1 vào 1 số random nên việc ta cần làm là tạo 1 file với tên là sess_
và nội dung như trên, sau khi nhận được số random đó thì paste vào cookie để solve chall này 😊
Khai thác
Script để tạo file upload: exploit step
Và upload: upload reponse
Cuối cùng ta set trong cookie: PHPSESSID=24094577
và load lại trang để server dùng session này. result
FLAG{my_zip_is_slipping_beauty}