NCKUCTF ret2libc2024 WriteUp
ret2lbic2024
1 |
|
能用的gadget都沒有,我們可以使用
deregister_tm_clones這個 function 有個神奇的東西 (如下圖)
這邊就會直接幫我們把rax設為0x404040(也就是stdout@GLIBC_2.2.5,call 完這個 function 後,我們只需要 call 回 main 中控制 printf 的mov rdi,rax就可以 leak 出 libc base,後面一樣用 libc 堆 rop chain 就可以了。

- 在leak的時候需要注意不能把
$rbp寫壞,因為下次gets()還需要一個stack空間存東西,所以隨便找一個可寫的空間給$rbp跳過去後面才不會crash掉。 - 為什麼 offset 不是用
stdout@@GLIBC_2.2.5stdout@@GLIBC_2.2.5是一個指向_IO_2_1_stdout_結構的指標,而_IO_2_1_stdout_是實際的 FILE 結構體。
使用_IO_2_1_stdout_可以直接操作該結構體的memory,而不是通過指標間接訪問它。這樣可以避免偏移計算中的錯誤,也可以更精確地控制內存中的值。
Exploitation
1 | from pwn import * |
- Title: NCKUCTF ret2libc2024 WriteUp
- Author: Chihhh Linnn
- Created at : 2024-08-16 21:49:01
- Updated at : 2024-08-16 21:49:01
- Link: https://chihhhs.github.io/2024/08/16/ncku-ctf-ret2libc2024-WriteUp/
- License: This work is licensed under CC BY-NC-SA 4.0.