n0s4n1ty 1
Introduction
PicoCTF 2025
Category: Web Exploitation
Write-up date: 18/03/2025
Question: A developer has added profile picture upload functionality to a website. However, the implementation is flawed, and it presents an opportunity for you. Your mission, should you choose to accept it, is to navigate to the provided web page and locate the file upload area. Your ultimate goal is to find the hidden flag located in the /root directory.
Additional details will be available after launching your challenge instance.
Point: Easy
Vulnerability
Recon
Theo đề bài, lập trình viện đã thêm chức năng upload vào web nhưng quên không kiểm tra nội dung upload của người dùng,
nhưng trong giai đoạn phát triển đã vô ý để lọt một số bug. Từ đó có thể suy ra một lỗi gì đó liên quan tới file. Từ
những dữ kiện trên, ta có thể đoán được là bài này sẽ liên quan tới Arbitrary upload files hoặc là LFI
Chức năng upload của web

Giải thích sơ qua về lỗi
Giả sử hệ thống máy chủ được xây dựng trên PHP và cho phép người dùng các file định dạng php và thực thi những file này. Khi đó thay vì upload avata, kẻ xấu có thể upload một file .php, sau đó truy cập tệp đã tải lên và các lệnh trong file đó sẽ được thực thi.
File upload vulnerabilities - Viblo

Exploit
Thay vì một avatar, mình sẽ upload lên đây một file .php chứa mã độc (hay còn gọi là webshell) để tiến hành thực hiện
các câu lệnh lên server. Mình sẽ sử dụng payload của P0wny@Shell. Ngoài ra các
bạn hoàn toàn có thể dùng các payload đơn giản khác như:
Sau khi upload xong thì sẽ nhận được thông báo từ hệ thống:

Khi truy cập vào trang uploads/shell.php

Sau khi sử dụng lệnh sudo ls /root để tìm flag ở trong thư mục root và sudo cat /root/flag.txt, ta lấy được flag:
