Local File Inclusion - Double encoding¶
Estimated time to read: 4 minutes
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
Link challenge này tại 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 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
Ta thấy đoạn code trên có include conf.inc.php, tiến hành xem file, ta được flag
Flag
Th1sIsTh3Fl4g!
-
Đọc thêm tại Local File Inclusion - Double encoding ↩