www.zip源码泄露。
发现黑名单中少了phar后缀,尝试上传phar
访问getshell:
flag在根目录下
提供源码,根据源码可知用的是user-meta插件,有已知漏洞:
https://www.zilyun.com/23036.html
可利用该漏洞来判断文件是否存在,因为:
先注册用户,上传文件获取nonce。
利用漏洞可判断出密码,先大写后小写,写脚本爆即可(题目很卡,还不如手测快):
而用户名在发布的文章中可看见作者为:
登陆后台后利用主题文件编辑器写入webshell:
flag在:/usr/local/This_1s_secert
随意注册账号后登陆,发现bot的主要功能就是bugreport和changepw,查看源码:
同时抓包发现无论是bugreport或者changepw都是通过websocket发给bot,并且bugreport是向管理员报告漏洞页面,由此想到类似csrf的CSWSH,测试许久后发现根据题目描述修改为内网ip端口,部署页面:
修改密码后登陆admin,买了一个hint取得源码。
可利用json在python和golang中的解析差异购买flag,app.py的逻辑是取json中的product去给到result,而最后的结果也是由result决定的,传入pay.go中的则是取request.get_data()[1:],在jsonparser.ArrayEach中同样是取product,但区别在于同时存在两个product时python取第二个,golang取第一个,因此传入:
第一个product可使金钱增加,第二个product则可绕过golang的判断update数据库中的字段从而取得flag,修改其中任意一个都可以购买flag。
给了源码,balancer可以pickle反序列化,同时只是过滤了R,直接绕过即可。
i
o
flag in 504 page
尝试直接sleep 100s后发现服务器直接502,由于服务器是nginx启动的,经过搜索找到文章:https://www.cnblogs.com/rexcheny/p/11179643.html
sleep过长会导致502,因此可以让服务器连续处理sleep,也就是说同时发起多个sleep,nginx按顺序响应,但在某一个请求中会一直超时从而主动断开产生504。
在cookie处设置userdata为如下的base64
用burp发多个包,在某个包中即可取得504拿到flag。
根据hint:
jquery sql注入漏洞:
暂时不清楚如何利用,不过还有一个8888的站,联想到注入该站获取密码。
通过在本地安装moodle后查看数据库发现密码无法解密,不过注意到数据库中有一个表名为mdl_user_password_resets的表,里面存有token,同时通过测试发现发送找回密码时会存入该token,在重置密码时带有该token即可重置,密码不能为弱密码。
后台上传插件rce,flag在/etc/mytest里面。
showfile处简单绕一下:
拖出来源码,经过测试可以用phar协议,同时源码有个class.php,联想到phar反序列化。
class.php一个很明显的pop链,不过有wakeup尝试用改属性数量绕过,发现需要绕过签名:
根据:
http://www.yongsheng.site/2022/05/14/phar/
上传点直接用PHP_SESSION_UPLOAD_PROGRESS来绕过就行了。
读proc/net/tcp发现有个10.10.10.10的机器,直接利用curl去读flag:
upload目录测试后发现存在nginx alias路径穿越,扫到题目存在phpinfo,显示使用了opcache拓展,同时文件上传运行bin后缀,很明显上传opcache getshell。
查看题目拿到opcache路径:
拿下index.php,简单逆了一下能够发现有个参数prefix,测试了一下可以指定上传前缀,直接起个docker生成bin文件,修改systemid上传即可getshell。
参考0ctf ezdoor:https://www.cnblogs.com/tr1ple/p/11194452.html
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=35uuxkmnyqucc
本文原创于HhhM的博客,转载请标明出处。