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}