查看代码,有5个stage,一一解决掉就能愉快看到flag了。

第一个stage:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

pwnable.kr-input-witeup 随笔 第1张

解决方案:

pwnable.kr-input-witeup 随笔 第2张

pwnable.kr-input-witeup 随笔 第3张

 

第二个stage:

pwnable.kr-input-witeup 随笔 第4张

 

解决方案:

使用了os.pipe()函数功能,os.pipe()用于创建一个管道,返回一对文件描述符(r,w)分别为读和写。

pwnable.kr-input-witeup 随笔 第5张

pwnable.kr-input-witeup 随笔 第6张

第三个stage:

pwnable.kr-input-witeup 随笔 第7张

解决方案:

pwnable.kr-input-witeup 随笔 第8张

第四个stage:

pwnable.kr-input-witeup 随笔 第9张

解决方案:

pwnable.kr-input-witeup 随笔 第10张

第五个stage:

pwnable.kr-input-witeup 随笔 第11张

解决方案:

pwnable.kr-input-witeup 随笔 第12张

解决方案全代码:

#!/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()

 这并没有结束,登上远程主机发现没有用,查看目录权限,

 pwnable.kr-input-witeup 随笔 第13张

tmp目录可写,就进去通过ln -s建立flag和input的软连接,并创建python脚本愉快地执行,完成。

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄