Hướng dẫn giải thử thách Transmutation

Dưới đây là bảng tóm tắt các bước khai thác dựa trên phân tích lỗ hổng ghi đè mã máy (Self-Modifying Code):

Bước Mục tiêu Chi tiết kỹ thuật Opcode / Giá trị
1 Tạo vòng lặp ghi vô hạn Ghi đè lệnh ret ở cuối hàm chall để chương trình không kết thúc mà tự động chạy tiếp vào main. Thay 0xc3 (ret) bằng 0x55 (push rbp) tại index 0x48.
2 Mở rộng phạm vi ghi Thay đổi giá trị giới hạn LEN trong lệnh lea để có thể ghi vào các vùng nhớ xa hơn. Thay byte offset 0x26 bằng 0xff tại index 0x1f.
3 Chèn Shellcode Tận dụng khả năng ghi vô hạn để chèn mã khai thác thực thi shell vào vùng nhớ trống. Ghi Shellcode amd64 vào vùng nhớ sau hàm chall (khoảng index 0xba).
4 Kích hoạt Shellcode Thay đổi luồng thực thi cuối hàm chall để nhảy vào vùng chứa Shellcode vừa chèn. Ghi lệnh jmp ngắn (0xeb) dẫn đến địa chỉ Shellcode.

Flag: bctf{CPU_0pt1m1z3r5_H4T3_th15_0n3_51mp13_tr1ck_5519225335}