Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Phát hiện lỗ hổng Path Traversal

    Path Traversal (dò đường dẫn thư mục) là một dạng lỗ hổng phổ biến khi ứng dụng web cho phép người dùng truyền vào một đường dẫn tương đối để truy cập tệp, nhưng không kiểm tra kỹ khiến kẻ tấn công có thể dùng chuỗi .. để thoát ra khỏi thư mục gốc được phép truy cập (ví dụ đọc được /etc/passwd).

    Cho một đường dẫn tương đối PPP gồm các thành phần cách nhau bởi dấu /. Hãy chuẩn hóa đường dẫn theo quy tắc:

    • Thành phần rỗng (do có // liên tiếp) hoặc . (thư mục hiện tại) bị bỏ qua;
    • Thành phần .. nghĩa là đi lên một cấp thư mục: nếu đường dẫn hiện tại (sau chuẩn hóa) đang còn ít nhất một thư mục thì bỏ thư mục cuối cùng đó ra; nếu đường dẫn hiện tại đã rỗng (đang ở thư mục gốc) mà vẫn gặp .. thì đây chính là hành vi thoát khỏi thư mục gốc — phát hiện lỗ hổng;
    • Các thành phần khác được thêm vào đường dẫn kết quả theo đúng thứ tự.

    Ví dụ: a/b/../../../etc/passwd → xử lý a, b, .. (bỏ b), .. (bỏ a, về gốc), .. (gốc rỗng mà vẫn gặp ..) → VULNERABLE.

    • Định dạng đầu vào:

      Một dòng duy nhất chứa đường dẫn tương đối PPP (có thể rỗng), gồm các thành phần chữ và số cách nhau bởi dấu /, độ dài tối đa 300 ký tự, không có dấu / ở đầu.

    • Định dạng đầu ra:

      Nếu quá trình chuẩn hóa phát hiện thoát khỏi thư mục gốc, in ra VULNERABLE.

      Ngược lại, in ra đường dẫn đã chuẩn hóa (các thành phần nối bằng /); nếu kết quả rỗng (đường dẫn trỏ về đúng thư mục gốc), in ra dấu chấm ..

      Ví dụ: input a/b/c/../../d → output a/d.

    Ví dụ:

    Đầu vào:

    a/b/c/../../d

    Đầu ra:

    a/d
    

    Đầu vào:

    a/b/../../../etc/passwd

    Đầu ra:

    VULNERABLE
    

    Đang tải editor...