在队内简单训练过两次比赛后直接上场国际赛事, 最终成绩如下所示:
在249支出战战队中一支成立不久, 还带着刚招的新人的战队, 能拿到这个排名某种意义上也挺不错了. 下面是本次sakana战队带队队长sudopacman在这次比赛中的个人总结, 出战选手为: sudopacman, H4nn4h(新成员), REP(新成员), liangmo,zy4024(新成员).
连接部分
saarctf分为两种连接模式, 即云托管(即使用ssh直接连接)和自托管(使用oracle vm virtualbox). 本次比赛中本队使用了云托管进行参赛, 连接方式为:
- 将下载的saarctf-cloud.conf文件修改为saarctf-cloud.ovpn, 使用3.4.2版本对应工具直接连接.
- ping [战队IP], 确认丢包率不为100%即为虚拟环境连接成功.
- 提交ssh密钥后完成准备阶段.
以下将详细介绍ssh连接部分:
openssh工具使用
战队使用openssh工具, 对于archlinux可以直接使用sudo pacman -S openssh
进行下载, 密钥使用指令ssh-keygen -t rsa
进行生成, 默认情况公钥和私钥将存放在.ssh文件夹中, 在文件中可以找到两个文件:[私钥名]与[私钥名].pub, 之前我们有人误将私钥当作公钥提交, 在这里提醒大家:私钥名].pub文件是公钥, *[私钥名]*是私钥, 不要随意把自己的私钥丢给大家.
竞赛过程
竞赛分为两个过程, 前面会留一小段时间进行代码审计与加固, 然后开始攻击时间, 本次比赛攻击轮次高达240轮, 每轮结束后将直接计算分值, 然后开始下一轮, 从晚上9点打到第二天凌晨6点, 加上在这之前还有一场凌晨2点持续24小时的常规ctf, 实在有点扛不住高强度消耗.
加固部分
感觉和网上说的差距会稍微有点大, 之前我们看教程主要说了点php的什么一件不死马, 弱口令......, 实际上好像也没这些乱七八糟的东西, 说一下我感觉重要的部分.
scp
指令: 拉文件其实是一件很重要的操作, 比赛开始可以直接拉取题目数据到本地分析, down掉以后还能本地自己还原, 而不是直接扣大分还原服务器.ps -ef
&kill
指令:ps -ef
能检测后台运行的程序,kill [指令号]
可以结束掉危险指令的进程.- 修改危险指令: 不建议直接删除, 我当时把很多重要工具进行改名, 结果防住了一些注入操作, 成功保住了几道赛题. 如果直接删除的话之后可能会有需要用到的地方, 像我之前出现了一个严重错误, 还好没有把指令直接删掉, 紧急修复了回去.
- 代码审计: 删改掉一些危险代码, 和常规ctf比赛不同的是awd中的代码会很多很长, 导致无法全部复制到大模型中, 只能人工审计, 这部分以后慢慢考虑.
攻击部分
相比防御, 攻击部分会显得稍像ctf, 可惜本次比赛我们战队的pwn手与web手全部翘掉了, 导致密码学玩家高强度坐牢. 我们试着打了一下没有结果, 最后干脆一心一意弄防御, 所以攻击部分就不细说误人子弟了, 简单聊一下自己的理解就好.
- 不同于训练赛, saarctf中不需要扫描ip, 玩家可以直接在排行榜找到对手的ip.
- 服务器中的代码一般是可以直接在网上找到的, 看历史issues应该可以帮到大忙, 但是我懒, 没有去看.
- 攻击的方式是审计与工具乱扫, 万一不小心扫出点什么呢, 很可惜, 我只在队内赛扫出点名堂.
- 值得一提的是对于大部分web新手来说主要学习php语言入坑, 但是以我这段时间的经历来看现在python, golang这类语言的比重在大幅提升,还有c语言的沙盒类题目比重也越来越高, emmmm, 大家看情况学吧.
杂谈
既然不是面向战队, 这篇文字就只介绍个大概吧, 对于awd, 个人感觉实战的体验和基本功会更加珍贵, 看教程学到的终究只能图一乐, 在越正式的比赛中基础会变得越重要, 反而只有那些简单的小比赛才会出现什么弱口令登录服务器和一键获取flag之类的东西吧.