Hình ảnh lúc ban đầu chall ![image](https://hackmd.io/_uploads/Sy32WN8l1l.png) Link source: https://drive.google.com/drive/folders/1AQGlAMe85AE7tj5lF-HPdPfbYHPcT5kW?usp=drive_link Đây là một chall, hmmmm nói sao nhỉ, cũng có vẻ dễ như cũng có vẻ khó. Và quan trọng, nó là blackbox nên việc tìm và dump lỗi là rất khó. Sau đó tôi mới nhìn ra được người ta để source code bằng việc pull một docker compose về. Cùng xem nhé >< **I** **Recon** Quét dirseach tôi được: ![image](https://hackmd.io/_uploads/Hy-aGNIgJx.png) Ở các endpoint này, flag.txt là fake. Chỉ có readme, lougot.php, about.php,Dockerfile là zô được. Sau khi thử vào các endpoint này, tôi thấy rằng không có gì để khai thác được cả. Tuy nhiên, khi đọc kĩ tôi mới thấy ở Readme có vấn đề, đây là hình ảnh của các endpoint đó: ![image](https://hackmd.io/_uploads/BJEsX4Uxyx.png) ![image](https://hackmd.io/_uploads/r10o7VLlkg.png) Nội dung của readme.md: ![image](https://hackmd.io/_uploads/Sys5VNUlkg.png) **II** Phân tích: Sau khi đọc readme kĩ hơn tôi thấy rằng có một container docker chính là container của chall nên tôi đã pull về bằng lệnh ``` docker pull hacksudov1/hacksudoctfv1 ``` Sau khi mở, tôi vào /var/www/html và nhìn thấy được source. Nhìn qua source code:![image](https://hackmd.io/_uploads/ByM4HV8xJg.png) Ta để ý ở file page.php có lỗi LFI: ![image](https://hackmd.io/_uploads/H1T8rVLxJe.png) Tuy nhiên, vì ở file readme có nội dung rằng phải leo quyền, thay đổi từ www-data sang root, rồi đọc root/root.txt làm tôi mất đi rất nhiều thời gian. Sau đó, tôi mới nghĩ đến sử dụng 'PHP filter chain' vì code đây là PHP. Nói thêm về lỗi này, thì nó là một lỗi làm cho một attacker có thể đọc được các file nội bộ của server, thậm chí là RCE. Ví dụ với /etc/passwd nhé: ![image](https://hackmd.io/_uploads/BkOBIEIekl.png) Một số link về kĩ thuật này: https://brightsec.com/blog/file-inclusion-vulnerabilities/ https://probiusofficial.github.io/PHP-FilterChain-Exploit/ https://hackmd.io/@endy/Skxms9eW2 Sau đó, tôi tiến hành RCE **III. Khai thác:** ![image](https://hackmd.io/_uploads/B1tQvNLg1g.png) ![image](https://hackmd.io/_uploads/SJkBwNLgkl.png) Copy phần payload, để vào chỗ bị LFI và ok, RCE được. Trong chall lúc thi, sẽ có một file '_si93-903u-jfncs3-234.txt' chứa flag. Nhưng ở trong docker container build về này thì không có. Tuy nhiên việc đã RCE được, thì đọc file là không tính tiền,kekeke.... Tôi vẫn cay, sao trong README lại nói làm tôi đi theo hướng khác chứ............. Link thực hiện payload có ở chỗ các link đọc thêm về LFI nhé. Hades