Writeup: 0xFun CTF 2026
Pwn | 67Phân tích challenge Checksec: 12RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILEFull RELRO Canary found NX enabled PIE enabled No RPATH RW-RUNPATH 57 Symbols No 0 2 chall_patched –> Gần như các cơ chế security đều đã được bật. File chall: Hàm main: 123456789101112131415161718192021222324252627282930313233343536373839int _...
Writeup: Uof CTF 2026
Web | No QuotesHướng giải Bài này là combo SQLi (bypass no quotes) –> UNION để trả về username chứa payload → SSTI Jinja2 ở /home–> chạy /readflag để lấy flag. 1. Điểm yếu trong code SQLi ở /login Query được ghép thẳng: 12SELECT id, username FROM usersWHERE username = ('{username}') AND password = ('{password}') WAF chỉ chặn ' và ", nên vẫn còn đường khác. SSTI ở /home 1return render_template_string(open("templates/home.html&...
Research: Bypass Werkzeug Debug PIN
Flask / Werkzeug Debug PIN – Full Theory & Exploitation Guide1. Tổng quan bài toánDạng bài này xuất hiện rất thường xuyên trong CTF Web / Pentest lab khi: Server chạy Flask ở chế độ debug Debugger của Werkzeug được bật Truy cập debugger yêu cầu PIN Ứng dụng tồn tại primitive đọc file tùy ý (LFI, path traversal, SSRF → file) Mục tiêu cuối cùng: Tính toán chính xác Werkzeug Debug PIN để truy cập interactive console → RCE 2. Điều kiện tiên quyết (Prerequisites)Bài bắt buộc phả...
Writeup: ASIS CTF 2025
Web | Bookmarks Phân tích file app.py, ta có thể thấy bug CLRF injection nằm ở hàm dashboard và hoàn toàn có thể tận dụng bug này để gây ra XSS. 1234567891011121314151617181920@app.route("/dashboard", methods=['GET'])def dashboard(): user_id = session.get("user_id") if not user_id: return "User not logged", 400 username = None with sqlite3.connect(DB_NAME) as conn: cur = conn.execute("SELECT username FROM users WHERE id =...
Research: File Stream Oriented Programming (FSOP)
Khái niệm về FILE struct FILE là kiểu dữ liệu (struct) mà thư viện C chuẩn (stdio) dùng để đại diện cho một luồng I/O (stream) — ví dụ: file trên đĩa, stdin/stdout, pipe, socket… khi dùng fopen/fread/fwrite/fprintf/fclose Cấu trúc của FILE trong glibc: Trong glibc, FILE (thường là _IO_FILE / _IO_FILE_plus) là một struct lớn có: buffer pointers (đang đọc/ghi tới đâu) flags/mode (đọc/ghi, wide/byte, lỗi/EOF…) file descriptor (fd) loc...
Writeup: SECCON CTF 2025
Pwn | Challenge: unserialize1. Phân tích challenge: File main.c: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <string.h>ssize_t unserialize(FILE *fp, char *buf, size_t size) { char szbuf[0x20]; char *tmpbuf; for (size_t i = 0; i < sizeof(szbuf); i++) { szbuf[i] = fgetc(fp); if (szbuf[i] == ':') { szbuf[i] = 0; b...
Writeup: BackdoorCTF 2025
Pwn | Challenge: Devil’s Convergence1. Phân tích chương trình: Sau khi reverse chương trình bằng IDA tool, thì ta sẽ biết được có 4 hàm quan trọng cần chú ý là: initialize : khỏi tạo giá trị cho biến toàn cục contract_seal là địa chỉ libc của hàm system và thực thi các hàm setvbuf. control_manipulation: Encode XOR data người dùng truyền vào buf với nửa phần đầu giá trị của biến contract_seal. war_devils_prophecy: Encode XOR data người dùng truyền vào buf với nửa phần sau giá trị của biến co...
Writeup: LakeCTF 2025
Web | Challenge: Gamblecore Dạng challenge này tác giả thiết kế mang thiên hướng RNG + bug (RNG: Random Number Generator) nên sẽ mang tính may rủi rất cao đúng như tên gọi của challenge:> Phân tích qua file server.js, file xử lý chính của challenge: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990app.get('/api/balance', (req, res) => { res.json(...
Writeup: Infobahn 2025
Beginner (Web) | Challenge: Bitset, Bitsets và Bitsetsy Các challenges này tác giả đã cố tình để unintended :> Mình chỉ cần truy cập /run.sh là lấy đc flag cho cả 3 bài :> Ở các challenge revenge sau sẽ bỏ đi unintended này và cần phải hack thật sự. Beginner (Web) | Challenge: Bitset-revenge, Bitsets-revengeBitset-revenge Chall này validate không an toàn ở param url và truyền giá trị url này vào thuộc tính src của tag img dẫn đến kẻ tấn công có thể bypass và gây ra xss lấy flag đư...
Writeup: HolaCTF 2025
Web | Hell EHCIntroduction Đây là một challenge liên quan đến lỗ hổng Deserialization và Wrapper phar:// trong PHP (PHP Phar deserialization) Link tải challenge: hell-ehc Cách chạy challenge: 12345# 1. build imagedocker build -t hell_ehc .# 2. Run containerdocker run -it --rm -p 5005:80 hell_ehc Solution1. Xác định vị trí xảy ra lỗi bảo mật trong mã nguồn Vì challenge có cho tính năng upload file nên ta sẽ thử kiểm tra liệu có thể tận dụng điều này để upload trực tiếp webshell và ...












