Bỏ qua

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

img_1.png

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ư:

<?php system($_GET["cmd"]); ?>

Sau khi upload xong thì sẽ nhận được thông báo từ hệ thống:

assets/images/n0s4n1ty_1.png

Khi truy cập vào trang uploads/shell.php assets/images/n0s4n1ty_1.png

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:

assets/images/n0s4n1ty_1.png