--- template: overrides/blog.html icon: material/plus-circle title: Local File Inclusion - Double encoding description: > search: exclude: true hide: - feedback tags: - PHP - Path Traversal --- # __Local File Inclusion - Double encoding__ :octicons-calendar-24: May 09, 2023 --- ## __Tài nguyên và link challenge__ Tài nguyên của challenge này tại [https://www.root-me.org/en/Challenges/Web-Server/Local-File-Inclusion-Double-encoding](https://www.root-me.org/en/Challenges/Web-Server/Local-File-Inclusion-Double-encoding) Link challenge này tại [:octicons-arrow-right-24: http://challenge01.root-me.org/web-serveur/ch43/][http://challenge01.root-me.org/web-serveur/ch43/] [http://challenge01.root-me.org/web-serveur/ch43/]: http://challenge01.root-me.org/web-serveur/ch43/ ## __Tổng quan__ Trong challenge này, mục tiêu của ta là lấy được password xác thực từ source files trên website. ## __Kịch bản tấn công__ ### Bước 1: Kiểm tra website Đầu tiên ta xem xét website và thực hiện vài câu truy vấn, ta tiêm thử ../admin thì bị hệ thống phát hiện attack Tới đây ta nghĩ rằng website đã filter "../", "./",... và nhiều thứ khác. Ta tiến hành dùng HTTP Encoding theo cách thông thường (. == %2E, / == %2F) thì vẫn không khả thi. Với challenge này, rootme đã cung cấp cho ta trang [owasp](https://owasp.org/www-community/Double_Encoding) này nói luôn về double encoding và cho ta mã hóa kép của "." là `%252E`; mã hóa kép của "/" là `%252F`. Tương tự: - Kí tự : được mã thành %253A - Kí tự - được mã thành %252D - Kí tự = được mã thành %253D ### Bước 2: Khai thác website Tiếp tục việc dạo quanh trên mạng, ta biết được để xem source file php ở trang home thì dùng filter bằng cú pháp `php://filter/convert.base64-encode/resource=home` Double encoding mã trên ta được `php%253A%252F%252Ffilter%252Fconvert%252Ebase64%252Dencode%252Fresource%253Dhome` Ta nhận được thông điệp là một chuỗi base64, tiến hành decode bằng [Base64 decoding][https://www.base64decode.org/] ta được đoạn code php như sau