1. 程式人生 > >pwnable.kr-input-witeup

pwnable.kr-input-witeup

stage 一個 目錄權限 roc obj port ln -s pen png

查看代碼,有5個stage,一一解決掉就能愉快看到flag了。

第一個stage:

技術分享圖片

解決方案:

技術分享圖片

技術分享圖片

第二個stage:

技術分享圖片

解決方案:

使用了os.pipe()函數功能,os.pipe()用於創建一個管道,返回一對文件描述符(r,w)分別為讀和寫。

技術分享圖片

技術分享圖片

第三個stage:

技術分享圖片

解決方案:

技術分享圖片

第四個stage:

技術分享圖片

解決方案:

技術分享圖片

第五個stage:

技術分享圖片

解決方案:

技術分享圖片

解決方案全代碼:

#!/usr/bin/python
import subprocess
import os
import socket

str1=[‘a‘]*100
str1[0]=‘./input‘
str1[ord(‘A‘)]=""
str1[ord(‘B‘)]="\x20\x0a\x0d"
str1[ord(‘C‘)]="65530"

stdinr,stdinw=os.pipe()
os.write(stdinw,"\x00\x0a\x00\xff")
stderrr,stderrw=os.pipe()
os.write(stderrw,"\x00\x0a\x02\xff")

os.environ["\xde\xad\xbe\xef"]="\xca\xfe\xba\xbe"

with open(‘./\x0a‘,‘wb‘) as fd:
	fd.write("\x00\x00\x00\x00")

subprocess.Popen(str1,stdin=stdinr,stderr=stderrr,env=os.environ)

obj=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
obj.connect((‘127.0.0.1‘,65530))
obj.send("\xde\xad\xbe\xef")
obj.close()

這並沒有結束,登上遠程主機發現沒有用,查看目錄權限,

技術分享圖片

tmp目錄可寫,就進去通過ln -s建立flag和input的軟連接,並創建python腳本愉快地執行,完成。

pwnable.kr-input-witeup