Header
Introduction
EHCTF
Category: Web
Write-up date: 03/03/2025
Question: Hãy Tương Tác với Page để nhận được những ưu đãi hấp dẫn nhé
HEADER là mật khẩu cho cuộc nói truyện này
Point: 100
Recon
Sau khi đọc qua đề bài, ta có thể thầy chall này liên quan tới Header của website, khi mở instance và truy cập trang web, chúng ta thấy web này có 5 challenge liên quan tới header.

Step 1/5
Vậy là bài đầu tiên liên quan đến tên trình duyệt, đầu bài bắt chúng ta phải sử dụng trình duyệt mang tên EHC_CHROME thì mới qua được đến bước xác minh thứ hai. Một mẹo để làm bài này là chúng ta cần phải có một document liên quan tới HTTP Request. Ở đây thì mình chịn MDN của Mozilla tại vì thông tin chính xác cũng như giao diễn dễ nhìn.
Trước tiên hãy nói tổng về cấu trúc của một gói tin HTTP:

HTTP message gồm 3 phần là
- Start line: Gồm phiên bản HTTP (ví dụ HTTP/1.1 hoặc là HTTP/1)
- Header: Gồm các metadata biểu diễn gói tin, ví dụ như là người dùng sử dụng trình duyệt nào, người dùng chấp nhận những gói tin nào, gói tin được gửi đi là loại gì...
- Body: là phần dữ liệu đính kèm với gói tin. Dữ liệu này có thể từ request POST được gửi tới server hoặc là một tài ngueyên như html, css được server gửi server vê.
Ở bài này chỉ liên quan tới header nên chúng ta sẽ lược bớt các phần khác của http message.
Ở bước 1, đề bài bắt chúng ta truy cập bằng trình duyệt có tên là EHC_CHROME. Vậy làm sao để server có thể biết chúng ta là trình duyệt gì? Ở trong HTTP header có một metadata đặc biệt mang tên User-Agent. User-Agent là một chuỗi ký tự cho server biết về Tên trình duyệt, hệ điều hành, thông tin hệ thống, vân vân. Bằng cách thay đổi User-Agent, chúng ta có thể "fake" tên trình duyệt mà chúng ta đang dùng. Sau khi đổi User-Agent, chúng ta sẽ qua được đến bước hai.
Step 2/5
Bước xác minh số hai là gửi địa chỉ gia nhập tới 127.0.0.1. Ta có thể thấy như ví dụ trên, trong metadata có một trường Host để chỉ domain hoặc ip được truy cập.
Fun fact: Host cũng là một header rất quan trọng đối với an ninh mạng, khi header này là một trong những mục tiêu tấn công của các đối tượng xấu. Một số kiểu tấn công liên quan tới SSRF hoặc là bybass authentication.
Step 3/5
Bước xác minh số ba là người dùng truy cập từ 197.54.23.12. Ở đây thì header để xác minh người dùng đến từ ip nào là X-Forwarded-For. X-Forwarded-For là một header để xác định xem client kết nối tới proxy qua địa chỉ nào. Ví dụ:

User trên kết nối tới một Reserve Proxy. Proxy đó đóng gói kết nối đó, thêm một số tag như X-Forwarded-For và X-Forwarded-Host, v.v. và gửi về cho origin server.
Step 4/5
Bước này header chúng ta cần sử dụng để chuyển thời gian về năm 2023 là Date. Date là một header cho ta biết thông tin HTTP message được gửi đi vào thời điểm nào.
Step 5/5
Header cần sử dụng ở bước này là Accept-Language. Accept-Language được sử dụng để cho server biết ngôn ngữ mà người dùng có thể đọc được là gì.
Sau khi giải xong 5 step chúng ta nhận được flag như sau Congratulations, Flag is EHCTF{heaDeR_l5_crAZY_riGhT7tt_4f00f2d345d0}
FLAG: EHCTF{heaDeR_l5_crAZY_riGhT7tt_4f00f2d345d0}