---
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

Hình ảnh website challenge
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`

Hình ảnh mô tả việc tiêm Path vào url
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
``` php linenums="1" hl_lines="1"
J. Smith - Home
= $conf['global_style'] ?>
= $conf['home'] ?>
```
Ta thấy đoạn code trên có include conf.inc.php, tiến hành xem file, ta được flag