Yuawn Pwn2 ret2libc Writeup
ret2libc
基本上每個新的技術就是為了解決一個新的保護機制,那 ret2libc 主要就是能 bypass ASLR,那廢話不多說我們來整理一下這次的計畫:
source code 基本上和上一題 ret2plt 差不多,但這次沒有 system 的 plt 可以 call,我們只好從 library 拿,那就必須知道 ASLR 所加上的 libc_base 是多少,知道以後再加上我們想要 call 的 function 的 offset 就是實際對應 function pointer 的位置。
- 那首先我們 call puts 的 plt 去印出 libc_start_main 的 got,之所以選擇 libc_start_main 是因為我們需要確保在 call 的時候 got 已經被 resolve 過,而 libc_start_main 會比 main 還要早被執行,所以是個很好的目標,拿到後再減掉 offset 就拿到 libc_base 了。
- 再來我們需要在拿到 base 的同一次攻擊中去呼叫 system,而我們的做法就是跳回 main 再重新 overflow 來送出我們的第二次 payload。
- 再來就是基本的 rop,值得注意的是有 libc_base 之後,就可以用工具來幫我們找 ‘/bin/sh’ 字串和 system 的位置,詳情請見 exploit.py:
1 | from pwn import * |
執行結果:
1 | [!] Could not populate PLT: invalid syntax (unicorn.py, line 110) |
Pwned !!!
- Title: Yuawn Pwn2 ret2libc Writeup
- Author: kazma
- Created at : 2023-12-18 00:22:18
- Updated at : 2023-12-18 16:10:49
- Link: https://kazma.tw/2023/12/18/Yuawn-Pwn2-ret2libc-Writeup/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments