Bài đăng

[WannaOne UIT 2021 - Rev] Dad And Son

Hình ảnh
Giải UIT qua cũng lâu nhưng giờ thi xong mới có dịp làm lại, tiện kiếm 20k tiền viết bài. Bài này lại sử dụng anti debug của linux bằng cách dùng fork vào ptrace để giao tiếp tiến trình cha con.  Tiến trình con thực thi 1 đoạn shellcode lưu ở loc_40a0, xem thử nó là gì Còn tiến trình cha sẽ là đoạn switch với các case là các signals mà tiến trình con gửi cho cha. Mình có comment trong Ida rồi, tý mình sẽ gửi file idb của mình. Sau một lúc debug thì tóm tắt luồng như sau: 1. Nhập input với 64 ký tự. 2. Ở địa chỉ 0x40c3 có phép idiv ecx, mà ecx bằng 0 nên sinh ra Signal SIGFPE là case 8. Trong case 8 nó gọi PTRACE_GETREGS rồi lưu vào mảng v7, suy ra được v7[0] đang chứa thanh ghi r15. Sao mình đoán dc r15, thì mọi người lên search cách sử dụng PTRACE_GETREGS, trong đó v7 là struct user_regs_struct, struct đó như sau   Mọi người có thể dùng kỹ thuật hook hoặc debug bằng gdb thì sẽ thấy lúc này r13 của thằng con đang trỏ tới input và r15 đang chứa 4 byte đầu của input. Suy ra v7[0...

[TetCTF 2022 - Pwn] Notes challenge

Hình ảnh
bài này là 1 bài heap dùng libzone, do trước mình từng làm 1 bài libzone nên cũng quen với kiểu allocation này, nhưng libzone không có bug nhé, để bug được thằng libzone hơi khó nếu không có lỗi kiểu overflow heap vì libzone không dùng cơ chế single link hoặc double link để lưu free chunk. nhìn kỹ thì sẽ thấy lỗi UAF ở hàm Note_Dealloc. void Note_Dealloc ( reference_t ref ) { Note_t noteptr ; assert ( ref != NULL ); noteptr = CAST_TO_NOTE ( ref ); if ( noteptr -> n_buffer ){ free ( noteptr -> n_buffer ); } NOTE_FREE ( noteptr ); } Nhưng muốn gọi hàm này phải để cho ref_count bằng 1 rồi dùng Note_Rele để đưa về 0. Khảo sát qua 6 chức năng thì tóm tắt lại như thế này: 1. Create tạo ra 1 note lưu tạm thời ở a_note, có ref_count = 1 2. Edit note thì nếu ref count > 1 thì nó sẽ tạo ra 1 thằng giống nó nhưng ref count = 1 rồi insert vào array, nếu ref count <= 1 thì mọi người tự đọc code nhé :D. 3. Save lưu a_note vào array và tăng ref count...