Pwnctf oob1 Writeup
oob1
執行後可以觀察到這題的情境是一個登入系統,首先會讓我們輸入 User ID,然後輸入密碼,再來會顯示我們嘗試登入的使用者名稱,最後輸出結果,如下所示:
1 | └─$ ./oob1 |
這題的關鍵是在讀取 User ID 時沒有做檢查,又他會顯示我們正在嘗試登入的使用者,因此可以透過 oob read 去讀取到 admin 的一開始設定的隨機密碼:
從上面可以看到 obj.user 的位置在 0x6010c0,那我們接下來就找 admin 的密碼放在哪個位置:
從上面可以找到 obj.pincode 在 0x6010a0,跟 obj.user 差 0x20,又原本的功能是要取其他 username 所以 rax 會左移三個 bits,也就是乘以 8,故 User ID 輸入 -4 可以 oob read 我們想要的東西,然後 information leak 完之後再把結果吃回來整理一下,登入 admin 即可走到 win func,exploit 如下:
1 | from pwn import * |
Result:
1 | └─$ python exploit.py |
Pwned !!!
- Title: Pwnctf oob1 Writeup
- Author: kazma
- Created at : 2024-01-17 01:04:53
- Updated at : 2024-01-17 02:09:04
- Link: https://kazma.tw/2024/01/17/Pwnctf-oob1-Writeup/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments