Writeup: LYKN CTF 2026
H34p_D3v1l WriteupThông tin challenge Category: pwn Binary: Heap_devil Libc: glibc 2.39 Protections: 123456RELRO: Full RELROStack: Canary foundNX: NX enabledPIE: PIE enabledSHSTK: EnabledIBT: Enabled Binary là một heap note manager đơn giản với các chức năng: 1234561. Create note2. View note3. Edit note4. Delete note5. Change note size6. Exit Mục tiêu là khai thác UAF/OOB trong note table, leak heap/libc, sau đó tcache poisoning để overwrite _...
PHP Deserialize
1. Tổng quanTrong bài Kobos, backend dùng PHP 8.2 + CodeIgniter 4. Challenge có một cụm chức năng admin dùng để backup, upload và đọc lại log thao tác truyện/chapter. Điểm yếu nằm ở việc backend đọc nội dung log rồi gọi trực tiếp: 1unserialize($log[2]); Nếu attacker kiểm soát được nội dung log, attacker có thể đưa vào một object PHP đã serialize sẵn. Khi unserialize() dựng lại object đó, các magic method như __destruct() có thể tự chạy và dẫn tới gọi hàm nguy hiểm. Trong bài này, gadget...
Python Deserialize (Pickle)
1. Tổng quanTrong bài IPKage, backend dùng FastAPI và có một tính năng upload/restore cache xử lý tài liệu trademark. Cache này được lưu dưới dạng file .pkl, sau đó backend đọc lại bằng pickle.load(). Vấn đề nằm ở chỗ: pickle không phải format dữ liệu an toàn để nhận từ user. Khi Python unpickle một object, nó có thể gọi lại các callable được chỉ định trong payload. Nếu attacker kiểm soát file pickle, attacker có thể biến thao tác pickle.load() thành thực thi code trên server. Luồng khai...
Java Deserialize
Sơ lược luồng khai thác1Stacked SQL Injection ---chèn payload base64 vào rule_blob---> Checkout ---> Deserialize ---> RCE Quá trình đi từ Checkout đến Deserialize Quá trình tái hiện và debugThực hiện stacked SQLi để chèn payload deserialize base64 vào rule_blob của bảng vouchers Đầu tiên thì mình sẽ check trước stacked sqli có hoạt động được hay không khi update rule_blob, mình sẽ thử UPDATE rule_blob của vouchers bằng 1 giá trị rác trước và sau đó sẽ dùng union sqli để kiểm tra ru...
Writeup: CBJS League (Season 1)
Week 1Challenge: Iox FrameworkPhân tích source code (iox-src.zip)index.php: - Mục đích chính là load module: example (file example.php) và sau đó thực thi. modules/example.php: - Tạo một đối tượng là $exampleController với class ExampleController được kế thừa từ CoreController, sau đó đối tượng này gọi đến method run() từ class CoreController. iox-libraries/controller.php: - Class CoreController: 123456789101112131415161718192021222324252627282930313233343536373839// Core c...
Writeup: Pwnable.tw
Calc (150 points)Phân tích chương trình: Challenge này mô phỏng một ứng dụng máy tính mô phỏng (calculator) cho phép người dùng nhập vào một biểu thức toán học, sau đó phân tích và trả về kết quả. Ứng dụng này sử dụng ELF 32-bit, No Pie và bật bảo vệ NX ngăn chặn việc thực thi trực tiếp shellcode. Lỗ hổng cốt lõi của chương trình nằm ở sự thiếu đồng bộ giữa bộ phân tích cú pháp parse_expr và hàm thực thi toán học eval. Các đoạn code quan trọng: (lưu ý: một số biến trong file nhị phân được rev...
Writeup: Midnight Flag CTF
Web | Clash Of FlansPhân tích challenge: Đây là dạng bài deserialize trong PHP, lỗ hổng xuất hiện khi hàm unserialize nhận trực tiếp input của người dùng mà không qua sàn lọc. 123456789101112public static function load($bakerName){ $baker = new Baker($bakerName); if (getCookie("flans")) { $data = unserialize(getCookie("flans")); if ($data !== false && is_array($data)) { $baker->flans = $data['flans'] ?? []...
Writeup: UTCTF
Pwn | Small BlindMô tả challenge: Come play some poker! You’ve got 500 chips and a shot to double up. The flag’s behind a win condition, but a good poker player knows there’s always more than one way to win. Bài này là dạng pwn blackbox và thường thì sẽ hay gặp lỗi format string, mình sẽ tận dụng lỗi này nhằm dump hoặc chỉnh sửa địa chỉ, dữ liệu trên stack nhằm hiểu cấu trúc của stack và những dữ liệu nhạy cảm. Phân tích chương trình: Đầu tiên, mình sẽ chạy thử chương trình trước để hiểu v...
Writeup: BK CTF 2026
Web | TinySQL 2Phân tích các đoạn code xử lý chính1. Route login in app.py: 1234567891011121314151617@app.route('/login', methods=['GET', 'POST'])def login(): if request.method == 'GET': return render_template('login.html') # user lookup syntax `S:[user]:[pass]#comment` # results = [id, user, pass] # removed sql injection # code, results = conn.query('S:' + request.form['user'] + ':' + request.form...
Writeup: LA CTF 2026
Web | GlotqGiới thiệuGlotq là một challenge CTF khai thác lỗ hổng trong ứng dụng web viếtbằng Go, tận dụng sự không nhất quán giữa lớp security middleware vàcác handler thực thi lệnh. Cụ thể, ta gửi payload đến endpoint /jsonnhưng gán header Content-Type: application/yaml. Khi đó middleware sửdụng YAML parser trong khi handler xử lý JSON parser. Kết quả là payloadđược giải mã khác nhau ở hai bước, cho phép vượt qua cơ chế kiểm tra vàthực thi lệnh bất hợp lệ. Cơ chế ứng dụng và middlewareXét ...







