Velocity Server Side Template Injection Challenge

Velocity Server Side Template Injection Challenge Tổng quan về lab Velocity SSTI Đây là một lab mình thiết kế ra để demo và học về SSTI. Bên trong lab được chia ra làm 4 level với các lớp filter khác nhau. Nhiệm vụ của mình là bypass được các lớp bảo mật đó nhằm mục đích cuối cùng là RCE. Bây giờ mình sẽ đi vào phân tích chức năng của web app. ...

December 20, 2025 · 9 min · Phat Mai

CBJS Java Misconfiguration Challenge

CBJS Java Misconfiguration Challenge Statement Viewer 1: Lỗ hổng từ đặc quyền “Privileged” và sự hớ hênh của Admin Tổng quan ứng dụng Ứng dụng cung cấp chức năng cơ bản: cho phép người dùng upload file (định dạng PDF/TXT) và view statement để xem lại các tệp tin đã tải lên. Mỗi tệp tin được cấp một đường dẫn riêng biệt để truy xuất. Qua phân tích mã nguồn (Whitebox), chúng ta sẽ tập trung vào những "backdoor" mà developer đã bỏ quên. ...

December 19, 2025 · 8 min · Phat Mai

Spring Time CTF challenge WriteUp

Spring Time CTF challenge WriteUp Web App được chia làm 2 services khác nhau bao gồm: gateman : port 8080 newsman : port 8082 Phân tích từng chức năng từng service Gateman Nó được chạy bằng port 8080 bên cạnh đó nó còn gọi cloud cùng với đó là expose include ra các chức năng như health , info , gateway. Vậy nên có thể biết được đây là service Spring Cloud với chức năng routing đến các routes. ...

December 5, 2025 · 14 min · Phat Mai

Java Deserialize CBJS Lab

Java Deserialize CBJS Lab Giải thích chi tiết về lỗ hổng Deserialization 1. Deserialization là gì? Serialization là quá trình chuyển đổi một object (đối tượng) trong bộ nhớ thành một định dạng có thể lưu trữ hoặc truyền tải (như byte stream, JSON, XML). Deserialization là quá trình ngược lại - chuyển đổi dữ liệu đã được serialize trở lại thành object trong bộ nhớ. 2. Nguyên nhân Lỗ hổng xảy ra khi: ...

December 4, 2025 · 14 min · Phat Mai

WebSec.fr level 1 CTF challenge

WebSec.fr level 1 CTF challenge Overview Giao diện chức năng của level này ta có thể thấy nó là một web app có chức năng hiển thị username bằng cách nhập vào userID nên bước đầu ta có thể nghi ngờ nó dính Sql Injection. Phân tích source code <?php session_start (); ini_set('display_errors', 'on'); ini_set('error_reporting', E_ALL); include 'anti_csrf.php'; init_token (); class LevelOne { public function doQuery($injection) { $pdo = new SQLite3('database.db', SQLITE3_OPEN_READONLY); $query = 'SELECT id,username FROM users WHERE id=' . $injection . ' LIMIT 1'; $getUsers = $pdo->query($query); $users = $getUsers->fetchArray(SQLITE3_ASSOC); if ($users) { return $users; } return false; } } if (isset ($_POST['submit']) && isset ($_POST['user_id'])) { check_and_refresh_token(); $lo = new LevelOne (); $userDetails = $lo->doQuery ($_POST['user_id']); } ?> Challenge cung cấp cho ta đoạn source code của của web app với logic được xử lý bằng php và ta có thể thấy rằng trường userID được query bằng SQLITE3. ...

November 28, 2025 · 3 min · Phat Mai

CyberCon 2025 SafeUpload Web Challenge

CyberCon 2025 SafeUpload Web Challenge Tổng quan challenge Mở challenge lên thì ta thấy nó cấp cho ta một giao diện dùng để upload file nên nghi ngờ ban đầu sẽ là web này dính lỗ hổng file upload. Tiến hành thử upload lên file php với nội dung: <?php echo "test"; ?> Có vẻ như đã dính filter của bài có thể thấy nó đã xoá đi file mình upload lên, bây giờ ta thử upload 1 file php nhưng không có nội dung. ...

November 25, 2025 · 10 min · Phat Mai

WebSec.fr Level 28 CTF challenge

WebSec.fr Level 28 CTF challenge Tổng quan: <?php if(isset($_POST['submit'])) { if ($_FILES['flag_file']['size'] > 4096) { die('Your file is too heavy.'); } $filename = './tmp/' . md5($_SERVER['REMOTE_ADDR']) . '.php'; $fp = fopen($_FILES['flag_file']['tmp_name'], 'r'); $flagfilecontent = fread($fp, filesize($_FILES['flag_file']['tmp_name'])); @fclose($fp); file_put_contents($filename, $flagfilecontent); if (md5_file($filename) === md5_file('flag.php') && $_POST['checksum'] == crc32($_POST['checksum'])) { include($filename); // it contains the `$flag` variable } else { $flag = "Nope, $filename is not the right file, sorry."; sleep(1); // Deter bruteforce } unlink($filename); } ?> Đoạn mã này là một trang web đơn giản cho phép người dùng tải lên một tệp và nhập một giá trị checksum. Mục tiêu là tải lên một tệp tin sao cho hai điều kiện sau được thỏa mãn: ...

November 24, 2025 · 5 min · Phat Mai

Cookie Arena Challenges WU (@Phatmh)

Cookie Arena Web Challenges WriteUp by (@Phatmh) NSLookup (Level 1) Đây là một Website có chức năng là nslookup sử dụng hàm shell_exec của php để thực thi. Ta tiến hành truy cập để xem giao diện của web app. Ở đây ta thấy nó khá là basic khi chỉ có duy nhất một nơi có chức năng nslookup và bên cạnh là source code cho sẵn của chall, ta sẽ tiến hành phân tích source code được cấp sẵn. ...

November 18, 2025 · 6 min · Phat Mai

CanteenFood CTF Challenge WriteUp

CanteenFood CTF Challenge WriteUp by @Phatmh Tiến hành phân tích chức năng theo kiểu BlackBox Đây là một trang Web có chức năng cho User tìm kiếm được món ăn phù hợp với túi tiền của mình nhất bằng cách nhập số tiền mình mong muốn nó sẽ trả về món mà mình đủ tiền trả. Ở đây sau khi viết ra số 300 và tiến hành bấm chức năng thì nó trả về được list các món dưới 300. ...

November 17, 2025 · 7 min · Phat Mai