[OverTheWire] Natas – Level 20

http://natas20.natas.labs.overthewire.org/

You are logged in as a regular user. Login as an admin to retrieve credentials for natas21.

Nhấn View sourcecode:

Chúng ta sẽ đi lần lượt theo quy trình xử lý của bài này. Đầu tiên khi ta submit form login:

Quá trình set giá trị cho biến $_SESSION được thực hiện qua hàm mywrite(), đáng chú ý ở:

Tức là giá trị của biến $_SESSION sẽ được lưu vào file thành 1 dòng. Sau đó là quá trình đọc thông tin login của user:

Thao tác lấy giá trị được đảm nhiệm bởi hàm myread():

Có một điểm đặc biệt là, nếu xét đúng bản chất, biến $_SESSION chỉ có thể chứa một thuộc tính có tên là name, tuy nhiên ở hàm myread(), code vẫn đọc từng dòng từ file để gán giá trị, và nó dẫn đến một cánh cửa vô cùng sáng cho ta lao vào, đó là inject ký tự xuống dòng vào username để tạo ra một thuộc tính 2 trong 1 khi đưa vô file still_dreaming

Kết quả:

You are an admin. The credentials for the next level are:<br><pre>Username: nata
s21
Password: IFekPyrQXftziDEsUr3x21sYuahypdgJ

→ flag = IFekPyrQXftziDEsUr3x21sYuahypdgJ.

Leave a Reply

Your email address will not be published. Required fields are marked *