# [HTB] Toxic Writeup ## Giới thiệu Một bài Lab ngắn được viết bằng PHP với chỉ 3 file duy nhất (thường mấy bài ngắn 1 là dễ nhai 2 là khó trôi) Tất nhiên để bắt đầu một bài lab thì mình sẽ bật web để lướt xem có tính năng gì và đọc source code để nắm luồng dữ liệu và tính năng vận hành như thế nào. ![](https://hackmd.io/_uploads/HyfK1fyAn.png) Và trang web không có tính năng nào khác ngoài đúng trang index, mở source ra thì tính năng chỉ có dựa trên cookie để render file ra giao diện theo. ## Mục tiêu và đối tượng 1. Mục tiêu 1. Flag nằm ở máy victim và ta cần thực thi lệnh để lấy được 2. Đối tượng đáng ngờ 1. LOC 12 trong file nginx.conf (truy cập được access log với link đó) ![](https://hackmd.io/_uploads/Hk0YyGkAh.png) 2. LOC 24 trong file index.php (nghi là deserialization) ![](https://hackmd.io/_uploads/B1uckzyCh.png) ## Thực hiện Đọc source code thì app nhận vào đường link nằm ở trong cookie và sử dụng hàm include() đọc file. ![](https://hackmd.io/_uploads/Bk-ikGJA3.png) Đọc hàm [include() theo document của PHP](https://www.php.net/manual/en/function.include.php) thì hàm này có thể đọc file và sẽ excute đối với file chứa code php. Nghĩa là nếu file bất kì mà chứa code php thì vẫn sẽ được chạy và đọc được như bth. Khá là thú vị ở đây Ta thử decode ở cookie thì thấy mặc định nó sẽ lấy file index và render ra, ta thử vọc ở biến này xem với cái access log trên ![](https://hackmd.io/_uploads/Byso1fkR2.png) Craft lại cookie thì ta được ![](https://hackmd.io/_uploads/HJUhkGyR2.png) Với file access log này ta thấy hai giá trị được list ra là __user-agent và method-url__. Nên mình sẽ thử craft một query chứa php để check xem có excute được không ![](https://hackmd.io/_uploads/Hk-61fkR3.png) Ta thấy ở log này không decode URL nên đoạn này sẽ không excute php được, ta thử inject ở user agent xem ![](https://hackmd.io/_uploads/S1s6kzk03.png) Ồ vậy ta có thể inject code php ở đây (số 5 sau 108.0), vậy thì triển để kiếm flag thoy ![](https://hackmd.io/_uploads/HJVRkzJR3.png) Ta sẽ thử dùng hàm system() để có thể thực thi các lệnh command để kiểm tra xem có file nào thú vị không ![](https://hackmd.io/_uploads/Hk201M1A3.png) Ồ file flag kìa :))) lụm ![](https://hackmd.io/_uploads/S1NkeG1Rn.png) Vậy là đã xong bài lab này rồi