Tag: uninitialized-stack-memory (9)pwnable.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 > CAOVVuln: Chương trình C++ vi phạm cơ chế return by value của SYSV ABI, dẫn đến lời gọi destructor trên dữ liệu trên stack trước đó được attacker kiểm soát.tl;dr: Cơ chế của sysv abi ở C++, trên C ko có cái này.February 23, 2026 • Mediumpwnable.tw > BabyStackVuln: Chương trình kiểm tra mật khẩu không cẩn thận với hàm strncmp(), dẫn đến bị bruteforce bởi attacker. Chương trình copy dữ liệu với hàm strcpy() nhưng không kiểm tra kích thước buffer, dẫn đến stack buffer overflow.tl;dr: Từ hàm này có thể gây overflow trên stack frame của hàm khác.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 • MediumVCS Passport 2025 > pwnVuln: Chương trình cho rằng buffer cần ghi có độ dài 256 bytes, nhưng trên thực tế trước đó buffer có thể được cấp phát ít hơn 256 bytes, dẫn đến heap buffer overflow.December 20, 2025 • MediumVCS Passport 2024 > PWN3Vuln: Chương trình tin rằng chỉ hàm handler() được gọi, nên stack frame của hàm đó và dữ liệu trong đó vẫn dữ nguyên, nên không kiểm tra con trỏ buf. Tuy nhiên attacker có thể gọi hàm khác trước khi gọi handler(), dẫn đến làm giả con trỏ buf.December 12, 2025 • Medium