Chung khảo Sinh viên với An toàn Thông tin 2024
Sinh viên với An toàn Thông tin là cuộc thi CTF danh giá nhất cho sinh viên ở Việt Nam. Hằng năm, cuộc thi được tổ chức 3 vòng là: khởi động, sơ khảo và chung khảo. Dưới đây là các bài giải cho một số challenge pwnable và reversing ở các vòng thi của mình.
pwn/ROP

0x00. Overview
Kiểm tra thông tin của binary và các lớp bảo vệ.
|
|
Đề bài cho một binary 64 bit, đã tắt canary và có thể ghi được GOT (Global Offset Table).
Bên cạnh đó, đề bài còn cho Dockerfile, mình sẽ build docker lên và lấy libc, ld trong docker trước. Dự tính đầu tiên của mình là sử dụng kỹ thuật ret2libc.
|
|
Dễ dàng thấy có bug Buffer Overflow trong hàm vuln()
. Đặc biệt hơn khi không có bất cứ hàm nào in được output ra màn hình. Vì vậy kỹ thuật ret2libc nêu trên không thể sử dụng được. Kết hợp với việc GOT ghi đè được, mình có thể dùng kỹ thuật ret2dlresolve
để giải hoặc stack pivot để overwrite bảng GOT của alarm()
thành execv()
.

0x01. Stack Pivot
Stack Pivot là một kỹ thuật đưa địa chỉ stack (luôn là một số ngẫu nhiên do ASLR bật) thành địa chỉ tĩnh của binary để dễ dàng xây dựng được các ROP chain.