从 HGAME2025 运维,聊聊学校战队 CTF 独立办赛

写这篇文章的时候,HGAME2025 马上就要结束了,还是比较有自信它能够平稳结束吧,就开始提前开香槟写总结文章了,你们看到这篇文章的时候估计已经结束了。 我所在的 Vidar-Team 算是办赛非常非常勤的一支队伍了,几乎覆盖了全年。我们一届运维,一路会从小规模长时间的 HGAME-Mini 开始办赛,到中上规模,较长时间的 HGAME 正式赛,再到线下赛 HGAME Final,最后还要办一个国际范围大强度标准时长的 D^3 CTF。 我先吹一句,高校战队中 No Body Has CTF Hosting Experience More Than Vidar-Team. 🙌 这届 HGAME 对我来说意义不同寻常,往年主要运维工作其实都由凌武科技承担,老学长连着干了不知道多少届运维,我们就混混经验看看操作。但是今年是完全由现役 Vidar-Team 成员去做的所有支撑工作,所以很多东西包括预算,选方案,开机子这些细节是完全从头来过的,也可以说这是我们这一届头一次独立办赛。 这篇文章我们主要还是谈一些运维上的方案,包括备选的技术方案,如果您是某个校队的队长或者运维,希望这些方案以及数据能够给你们提供一些小小的帮助。 关于平台与集群化 平台选择非常重要,下面的讨论是完全基于“回归终端”这一平台进行,你可以在 https://ctf.xidian.edu.cn/ 找到部署好的平台以及找到开发者联系方式。 这个平台目前并不开源,如果要办赛,要做私有化部署,需要事先获取作者rx授权,当然你可以有其他的选择,比如 GZCTF,也是一个非常现代化 CTF 平台,包括所有必须的功能。 HGAME 选取回归终端一部分原因是其还承担着一些关于回归终端的规模技术验证的任务,您自然可以做出你自己的选择。 但是一些旧平台可能会存在一些能力的缺失,导致无法实现下面我们提到的的一些方案。 打个比方说CTFd,他的原版是没有动态靶机能力的,虽然可以通过插件实现 Docker 容器分发,但实际上靶机调度能力比较受限,比如你想做多个节点的容器调度,他就是做不了。 不过我们也不是非要动态靶机不可,下面的丐版方案会提到,最低成本办赛。 一些假设 要出运维方案我们肯定得先确定一下规模和办赛方案,我们做了一些假设: 报名参赛的人数计作 1000 开赛当天有 30% 的人会蹲点开靶机,合计 300-400 靶机 假设平均一个靶机需要 512MB,CPU内存配比按 1:2 给 流量费用与计算资源费用 1:1 峰值过后靶机数量维持在 100 左右 有了这些个假设,我们就可以开始做预算了 HGAME 赛程相当长,平台开放时间从注册两周,到比赛两周,再到复现一周,合计会有5周时间,相同规模下预算会显著高于那些只办 48h 的赛事。 这里所有的预算仅为事先试算,数据均不可靠 多个方案 最优方案: ALL IN 阿里云 ACK 具体计算细节不提了,如果采用这个方案,预算会来到 2000-3000 这一个位置,最大的好处是他确实稳,同时也能省下很多很多的精力,往上面托管就好了。 ...

February 17, 2025 · BaiMeow

SUID特殊权限提权

SUID特殊权限提权 SUID是什么 SUID是一种特殊权限,当拥有该权限的程序运行时,进程的属主不是进程的发起者而是程序的所有者。 SUID可以用来做什么 SUID是维持权限的一种手段,攻击者在临时获得权限后,可以将vim,cp等命令设置为SUID特殊权限,例如可以修改/root/.ssh/authorized_keys进行无密码登录,此外还有很多其他方式留后门。 添加SUID权限 example chmod u+s /usr/bin/vim chmod g+s /usr/bin/vim 寻找SUID权限文件 受害者错误配置的文件权限时,可以利用这些被错误配置的文件完成攻击 查找SUID、SGID文件 #Find SUID find / -type f -perm -u=s 2>/dev/null #Find GUID find / -type f -perm -g=s 2>/dev/null reference: http://cn-sec.com/archives/501443.html https://gtfobins.github.io

October 8, 2022 · BaiMeow

php://filter

php输入输出流过滤器 references:https://www.php.net/manual/zh/wrappers.php.php

September 30, 2022 · BaiMeow

命令执行漏洞

空格绕过 ${IFS} $IFS$9 $9指传过来的第9个参数 %09(需要PHP环境) <或者<>重定向 关键字绕过 变量拼接 a=c;b=at;c=fl;d=ag;$a$b $c$d 单引号,双引号绕过 ca''t flag 编码绕过 $(printf "\154\163") ==>ls $(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") ==>cat /flag {printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|\$0 ==>cat /flag 读文件绕过(当cat被过滤) more:一页一页的显示档案内容 less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页 head:查看头几行(参数-c 10指定前10个字节) tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示 tail:查看尾几行(参数-c 10指定后10个字节) nl:显示的时候,顺便输出行号 od:以二进制的方式读取档案内容 vi/vim:一种编辑器,这个也可以查看 sort:可以查看 uniq:可以查看 file -f:报错出具体内容 反斜线 c\at $1、$2等和$@ c$1at from:https://blog.51cto.com/m0re/3879244

September 22, 2022 · BaiMeow

php审计1

include include一个php流,base64编码源码 php://filter/read=convert.base64-encode/resource=index.php

September 22, 2022 · BaiMeow