Kiến thức cần có

1. Đường dẫn là gì? What is Path?

Đường dẫn trong thực tếlà đường đi từnơi này đến nơi khác. Còn trên máy tính đó chính là đường dẫn đểta truy cấp đến những file, thư mục được lưu trên máy tính.

2. Absolute Path vs Relative Path

Absolute Path Relative Path
/etc/ssh .ssh

3. Đường dẫn xuất hiện ở đâu trong thế giới Web

Đường dẫn (Path) là một chuỗi ký tự xác định vị trí của tài nguyên trong hệ thống phân cấp, có thể là:

ĐƯỜNG DẪN (PATH) ├── Local Path (Đường dẫn cục bộ) │ ├── Absolute Path (Tuyệt đối): /var/www/html/index.php │ ├── Relative Path (Tương đối): ../config/database.php │ └── Canonical Path (Chuẩn hóa) │ ├── URL Path (Đường dẫn mạng) │ ├── Protocol: http, https, ftp, file:// │ ├── Domain/IP │ ├── Port │ ├── Path: /users/profile?id=123 │ ├── Query Parameters: ?search=keyword │ └── Fragment: #section-1 │ └── Virtual Path (Đường dẫn ảo) ├── Aliases ├── Symbolic Links └── Virtual Directories

4. Ví dụ về Path Traversal Vulnerabilities

Ví dụ cách sử dụng đường dẫn trong trang web và lỗ hổng tiền ẩn

<?php 
$file_name = $_GET['file_name'];
$file_path = '/var/www/html/images/' . $file_name; 
//$file_path = 'images/' . $file_name; 

if (file_exists($file_path)) {
    header('Content-Type: image/png');
    readfile($file_path);
}
else { // Image file not found
    echo " 404 Not Found";
}