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

Web Cache Deception Demo Lab

Web Cache Deception Demo Lab Tổng quan Web Cache Deception Lỗ hổng “web cache deception” (đánh lừa bộ nhớ đệm web) là một dạng lỗ hổng bảo mật web, cho phép kẻ tấn công lừa hệ thống cache (bộ nhớ đệm web) lưu trữ và phục vụ lại những nội dung nhạy cảm hoặc riêng tư cho các bên không được ủy quyền. Đây là một hình thức khai thác sự khác biệt trong cách các server cache và server gốc xử lý các request—đặc biệt là về quy tắc lưu cache cho các tài nguyên động (như trang tài khoản người dùng, trang admin, v.v.). ...

December 2, 2025 · 4 min · Phat Mai

NoSQL Injection Vulnerability Challenge Java

NoSQL Injection Vulnerability Challenge Java Tổng quan về NoSQL Injection Tấn công NoSQL injection là một lỗ hổng bảo mật trong các ứng dụng web sử dụng cơ sở dữ liệu NoSQL. NoSQL (viết tắt của “Not Only SQL”) là các hệ thống cơ sở dữ liệu không sử dụng ngôn ngữ truy vấn có cấu trúc SQL, mà thay vào đó dùng các định dạng dữ liệu linh hoạt hơn như cặp khóa-giá trị, tài liệu (document), hoặc đồ thị dữ liệu. ...

December 1, 2025 · 9 min · Phat Mai

Broken Access Control Vulnerability Lab

Broken Access Control Vulnerability Lab What is Broken Access Control (BAC) Broken Access Control là một loại lỗ hổng bảo mật web xảy ra khi người dùng có thể truy cập vào các tài nguyên hoặc thực hiện các hành động vượt quá quyền hạn cho phép của họ. Đây là một trong những rủi ro bảo mật nghiêm trọng nhất đối với các ứng dụng web, theo danh sách của OWASP Top 10. ...

November 30, 2025 · 4 min · Phat Mai

XXE Injection Vulnerability Lab

XXE Injection Vulnerability Lab XXE Injection là gì? XXE (XML External Entity) Injection là một lỗ hổng bảo mật web cho phép kẻ tấn công can thiệp vào quá trình một ứng dụng xử lý dữ liệu XML. Lỗ hổng này xảy ra khi một trình phân tích (parser) XML được cấu hình yếu xử lý các thực thể bên ngoài (external entities) do người dùng cung cấp trong tài liệu XML. ...

November 29, 2025 · 13 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

Server Side Request Forgery (Java)

Server Side Request Forgery (Java) Source Code Github: https://github.com/pzhat/SSRF_vuln_demo What is SSRF Giới thiệu về Server-Side Request Forgery : Chúng ta có xu hướng lơ là, mất cảnh giác khi đang trong vùng an toàn → Developer nghĩ rằng hacker sẽ không truy cập được các ứng dụng nội bộ do đó việc bị hack gần như là không thể → Pentester cũng không đủ thời gian để security test hết tất cả dịch vụ nội bộ ...

November 27, 2025 · 8 min · Phat Mai

Java Servlet Path Traversal vulnerability

Java Servlet Path Traversal vulnerability Source Code: [Github Link] Overview Đây là chức năng hiển thị hình ảnh của các file đã nằm trong folder images. Ở đây ta test file skibidi.jpg và request nó sẽ hiển thị lên cho ta. Đây là nơi chứa các file có thể hiển thị. Vì là build trên môi trường windows localhost qua apache tôi sẽ tạo một thư mục /protected có chứa file bí mật. ...

November 26, 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