Description

Command Injection Challenge

Find the contents of the flag located in /home/tryhackme/flag.txt. You can use a variety of payloads to achieve this – I recommend trying multiple.

Approach

Form có dạng như sau:

Nhập vào 127.0.0.1 thì kết quả trả về là:

Có thể thấy, server đã thực hiện gọi lệnh ping với 4 packets.

Tiến hành thử các payloads có sẵn, có thể tham khảo:

Thử truyền vào ;whoami thì thu được:

www-data

Ban đầu tưởng đây không phải là username nên bỏ qua.

Tiếp tục thử ;ls thì thu được:

css file.txt img index.php js test.php

Xác định được có thể thực hiện command injection, thử thêm lệnh ;cat index.php để đảm bảo là ta có thể đọc dữ liệu của tập tin.

Thu được giao diện của form tương tự như hình ảnh ban đầu cũng như là dòng code sau đây:

"; $result = passthru("/bin/ping -c 4 ".$_GET["address"]); } ?>

Đúng như dự đoán ban đầu, chương trình thực hiện gọi lệnh ping với 4 gói tin.

Đến lúc này, ta cần xác định đường dẫn hiện tại thông qua payload ;pwd, thu được:

/var/www/html

Yêu cầu đề bài là đọc file /home/tryhackme/flag.txt. Vì thế ta cần truy cập vào thư mục /home/tryhackme và dùng lệnh cat để đọc file flag.txt.

Payload như sau:

;/home/tryhackme;cat flag.txt

Nội dung của file cũng chính là flag.

Từ đây, ta cũng có thể kết luận được luôn chuỗi www-data ban đầu chính là username cần tìm.

Flag

What user is this application running as?

www-data

What are the contents of the flag located in /home/tryhackme/flag.txt?

THM{COMMAND_INJECTION_COMPLETE}