Chuyển đến nội dung chính

[Crypto] Birthday Paradox

Nghịch lý Birthday là 1 trong những nghịch lý được áp dụng rất nhiều khi dùng để giải mã trong Crypto. Câu hỏi:  "Cần ít nhất bao nhiêu người để xác suất có 1 cặp trong số đó trùng ngày-tháng sinh với nhau là > 50%?"  Câu trả lời là 23 người.  Nghe qua thì hơi khó tin, lần đầu nghe mình cũng không tin lắm :)) nhưng để chứng minh nó bằng các giải ngược thì khá đơn giản:  Gọi A là biến cố không có ai trong 23 người cùng ngày sinh, ta cần tính 1- P(A).  Ta có: Với mỗi người ta có cách chọn ngày sinh lần lượt là: 365, 365 - 1, ..., 365 - 22 Không gian mẫu:  365^23 Suy ra:  1- P(A) = 50.73%   Vậy nên trong 1 lớp họp có hơn 30 người, xác suất có 2 người trùng ngày sinh lên tới gần 70%, nên thường trong 1 lớp sẽ có 2 người trung ngày sinh.  Phát biểu: Chỉ cần thử 1.2 * sqrt(n) thì sẽ có tới 50% là có 1 cặp giống nhau. Áp dụng định lý này với phương pháp Brute-force: 

Upload Vulnerabilities TryHackMe

 Các bộ lọc khi Upload file: 

Extension Validation (Lọc đuôi mở rộng file):

MS Window vẫn dùng cách đọc các đuôi mở rộng để xác định loại file, thường sẽ có whitelist hoặc blacklist cho loại này.

File Type Filtering (Lọc file):

Khi tải file lên và gửi đi, tệp được xác định loại têp 1 lần nữa: 

    MIME validation: MIME (Multipurpose Internet Mail Extension):

    Loại MIME để tải tệp lên được đính kèm trong tiêu đề của yêu cầu và trông giống như sau:

    


    Magic Number validation:
Magic Number là chuỗi byte ở đầu nội dung tệp nhằm để xác định loại     tệp, ví dụ: tệp PNG sẽ có các byte này ở đầu tệp: 89 50 4E 47 0D 0A 1A 0A


    Không giống như Windows, hệ thống Unix sử dụng các con số kỳ diệu để xác định tệp; tuy nhiên,        khi xử lý việc tải tệp lên, có thể kiểm tra số ma thuật của tệp đã tải lên để đảm bảo rằng nó an toàn        được chấp nhận

File Length Filtering: Bộ lọc độ dài tệp được sử dụng để ngăn các tệp lớn được tải lên máy chủ thông qua biểu mẫu tải lên (vì điều này có thể khiến máy chủ bị thiếu tài nguyên) 

File Name Filtering: Tệp tải lên được kiểm tra xem có trùng với tên tệp có sẵn trên server không, ngoài ra tên tệp phải được chọn lọc khi tải lên để đảm bảo rằng chúng không chứa bất kỳ "ký tự xấu" nào có thể gây ra sự cố trên hệ thống tệp khi tải lên.

File Content Filtering: Các hệ thống lọc phức tạp hơn có thể quét toàn bộ nội dung của tệp đã tải lên để đảm bảo rằng tệp đó không giả mạo phần mở rộng, loại MIME và Magic Number. 

Challenge

 

Nhận xét

Bài đăng phổ biến từ blog này

[Web] Simple HTTP Proxy - Cookie Hân Hoan

Bài này có file code, ta có thể tải về và mở file run.py: ở đây, ta thấy nếu muốn lấy được flag, ta cần gửi POST request path: /admin Và ở đây thì cần phải thực hiện bởi localhost. Vậy ta sẽ dùng /socket để thực hiện: Ta nhập ở phần socket: Host là 127.0.0.1 port 1337 Lưu ý là ở POST thì cần thêm 1 dòng trắng bên dưới (để phân biệt với GET) Và send thì ta được: Vậy là ta đang đi đúng đường rồi, ta chỉ việc thêm các header khác: Và được kết quả: