标签:ima python 文件描述符 python脚本 解决方案 port environ code ln -s
查看代码,有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脚本愉快地执行,完成。
标签:ima python 文件描述符 python脚本 解决方案 port environ code ln -s
原文地址:https://www.cnblogs.com/HYWZ36/p/10747695.html