Tag: great-chall (29)pwnable.tw > Food StoreVuln: Con trỏ next trỏ đến Recipe tiếp theo ko đc init khi tạo Recipe mới, có thể bị lợi dụng để trỏ về chunk đã free, dẫn đến UAF, tạo chunk overlap.tl;dr: Không chỉ setup heap cho mục tiêu ngay trước mắt, mà cần tính toán cho các bước về sau; Heap spray, rồi lợi dụng alignment khi cấp phát để kiểm soát uninit data.March 7, 2026 • Hardpwnable.tw > Ghost PartyVuln: Vi phạm Rule Of Three trong C++ do thiếu copy constructor, gây double free sau khi pass by value; Gán raw pointer vào thành viên class, pointer được free ngay khi out of scope, gây UAF.March 7, 2026 • Hardpwnable.tw > Bounty Program βVuln: Không kiểm tra NULL trước khi sử dụng strtok().tl;dr: Bounty Program αMarch 3, 2026 • Hardpwnable.tw > Bounty Program αVuln: Không kiểm tra NULL trước khi sử dụng strtok().tl;dr: Hành vi nguy hiểm của strtok(NULL, delim); Hàm calloc() bỏ qua tcache; Env var có thể tác động đến hành vi của ptmalloc.March 3, 2026 • Hardpwnable.tw > WannaHeaptl;dr: Bớt map to another variable trong IDA lại :); Tìm gadgets hiệu quả hơn; Setcontext gadget để setup toàn bộ register.March 1, 2026 • Hardpwnable.tw > unexploitableFebruary 28, 2026 • Mediumpwnable.tw > Printabletl;dr: Tận dụng địa chỉ ld còn sót trên stack; Ghi đè l_addr, để nhảy đến fini_array entry giả; printf() tự ghi đè return address của nó; printf() luôn thông qua bss của binary để tìm đến stdout; Dùng stderr thay cho stdout.February 26, 2026 • Hardpwnable.tw > De-ASLRtl;dr: Tận dụng địa chỉ libc, ld còn sót lại trên stack, phía dưới stack frame thì do tổ tiên caller, phía trên thì do callee; Bruteforce ASLR với xác suất; Exploit trên remote có thể cần nhiều lần chạy kể cả khi local chỉ cần 1 lần;February 25, 2026 • Hardpwnable.tw > Re-alloc RevengeVuln: Chương trình không kiểm tra cẩn thận sau khi sử dụng realloc, cho phép kẻ tấn công thực hiện use-after-free.tl;dr: Partially overwrite địa chỉ libc, cần bruteforce với xác suất thành công 1/16; Có thể gộp các chunk liền kề nhau trong fastbin và đặt vào unsortedbin bằng cách trigger malloc_consolidate().February 24, 2026 • Hardpwnable.tw > Heap Paradisetl;dr: Chunk overlap, vừa trong unsortedbin, vừa trong fastbin; Partially overwrite ko cần leak libc; Ghi đè flags của stdout thành 0xfbad1800 và _IO_write_base để leak libc.February 20, 2026 • Mediumpwnable.tw > Kiddingtl;dr: Tương tác out-of-band; Mở socket để tạo reverse shell.February 19, 2026 • Medium • Puzzlypwnable.tw > BookWriterVuln: Off-by-one error cho phép attacker ghi out-of-bound vào kích thước của page, dẫn đến buffer overflow tuỳ ý trên heap khi chỉnh sửa page content.February 19, 2026 • Mediumpwnable.tw > Secret Of My HeartVuln: Chương trình đặt null byte sau input của user không cẩn thận, gây 1 null byte overflow, ghi đè vào size của chunk liền sau, attacker có thể gây chunks overlap từ đó.tl;dr: Lại là 1 null byte overflow; Heap chunk consolidation, overlapping.February 19, 2026 • Mediumpwnable.tw > Secret Gardentl;dr: Bớt giả định, nhìn xem dòng code đang thực sự làm gì; Ghi one gadget vào realloc hook, ghi realloc vào malloc hook; hoặc ghi one gadget vào malloc hook và double free để trigger malloc printerr.February 19, 2026 • Easypwnable.tw > Spirited AwayVuln: Chương trình sử dụng sprintf() cho ra chuỗi kết quả vượt quá kích thước buffer, gây buffer overflow ghi đè vào len, tiếp tục gây buffer overflow ở các buffer khác.tl;dr: Buffer overflow rất tinh vi, check size buffer thật kỹ.February 14, 2026 • Easypwnable.tw > applestoreVuln: Chương trình giữ reference toàn cục đến biến cục bộ của hàm. Khi hàm khác được gọi, vị trí biến cục bộ bị overlapped, dẫn đến chương trình sử dụng input do attacker kiểm soát.tl;dr: Cần check xem biến cục bộ nào trong stack bị lưu lại tham chiếu; Không giả định rằng chương trình sử dụng bao nhiêu data đc input vào thì mình chỉ nhập bấy nhiêu đó.February 4, 2026 • Mediumpwnable.tw > Silver BulletVuln: Việc sử dụng strncat() không cẩn thận dẫn đến 1 null byte overflow ở cuối, ghi đè bộ đếm gây ra stack buffer overflow.tl;dr: 1 null byte overflow cần để ý kỹ (sau khi user input); Stack pivot để đặt rbp vào nơi hợp lý và control RIP đến nơi tính toán địa chỉ dựa trên rbp.February 3, 2026 • Mediumpwnable.tw > 3x17tl;dr: Ghi đè fini_array; Break toàn bộ địa chỉ trong GOT entries.January 31, 2026 • Medium • Puzzlypwnable.tw > calcVuln: Chương trình tin rằng bộ đếm luôn nằm trong khoảng hợp lệ, tuy nhiên thực tế bộ đếm được cộng trừ bất kiểm soát, dẫn đến ghi out-of-bound.January 31, 2026 • Medium0xL4ugh CTF V5 > Zoro's Blind PathJanuary 24, 2026 • MediumGoogleCTF 2023 Quals > gradebookVuln: Chương trình giả sử rằng room chỉ có 3 ký tự, nhưng lại cho phép attacker nhập 4 ký tự, dẫn đến ghi đè null terminator và leak dữ liệu trên stack. Tiếp đến, chương trình tin rằng các metadata của file gradebook là hợp lệ, tuy nhiên attack có thể làm giả field head_offset, dẫn đến làm giả toàn bộ field khác, hoặc chỉnh sửa metadata sau khi đã load file do chia sẻ vùng nhớ -> đọc ghi tùy ý.tl;dr: Cứ input full size buffer đi; MAP_SHARED cho map trực tiếp vào source gốc;January 8, 2026 • HardBtS 2025 > HexDumperVuln: Chương trình tin rằng count > 0 khi dùng Duff's device để copy dữ liệu, nhưng attacker có thể đưa count = 0 qua input không được validate, dẫn đến buffer overflow 8 byte trên heap.tl;dr: wide_vtable chưa bị validate như vtable.January 2, 2026 • MediumWannaGame Championship 2025 > oopVuln: Chương trình tin rằng việc Person trong Note được copy tạo ra một object độc lập, tuy nhiên trên thực tế, shallow copy được thực hiện, dẫn đến có 2 Person object cùng có description trỏ đến một vùng nhớ -> use-after-free.tl;dr: Để ý kiểu copy của object, shallow hay deep?December 24, 2025 • HardVCS Passport 2025 > final pokemon playerVuln: Chương trình tin rằng biến toàn cục total_owned_pokemons được truy cập tuần tự, nhất quán, tuy nhiên 2 thread vẫn có thể tranh chấp dẫn đến TOC-TOU race condition -> ghi out-of-bound.tl;dr: Kiểm tra race condition nơi có sử dụng thread.December 20, 2025 • MediumCSCV 2025 Jeopardy Final > HeapNote RevengeVuln: Chương trình tin rằng hàm input kích thước từ người dùng và kích thước trả về sử dụng cùng kiểu dữ liệu -> tin rằng đã nằm trong khoảng hợp lệ, tuy nhiên attacker có thể nhập kích thước gây tràn số, dẫn đến bypass các checks qua implicit cast -> stack buffer overflow.tl;dr: Cần track thêm cả type của biến, integer vulnerability rất tinh vi.November 16, 2025 • MediumCSCV 2025 Preliminary > Hanoi ConventionVuln: Chương trình tin rằng player_thoughts sẽ không chứa format string, tuy nhiên attacker có thể nhập format string do không validate, dẫn đến leak dữ liệu trên stack. Bên cạnh đó, chương trình cũng tin rằng, random_message_ptr luôn trỏ đến chuỗi hợp lệ, nhưng attacker có thể làm giả bằng cách buffer overflow trên vùng bss do không kiểm tra độ dài src so với dest khi strcpy().tl;dr: Patch byte trong binary phục vụ cho debug; Leak nhiều địa chỉ libc để dự đoán phiên bản glibc.October 25, 2025 • HardGoogleCTF 2023 Quals > write-flag-where123tl;dr: PTY vs PIPE; Blind data leak;October 20, 2025 • Hard • PuzzlyASCIS Final 2024 > ROPVuln: Chương trình tin rằng việc cho phép overflow 40 bytes không có vấn đề to tát, tuy nhiên attacker có thể stack pivot và thực hiện ROP.October 17, 2025 • Insane • PuzzlypicoCTF 2024 > high frequency troublesVuln: house of orange + heap buffer overflow - improper length check in gets().October 8, 2025 • Hard