114
158
640
高级会员
0x0 背景
首先来了解什么是Awd Plus(或者叫awd+,Break+Fix等等),它分为两个部分,我们现从Break(攻击环节)开始说。
Break(攻击)
各赛队对靶标环境进行预设安全挑战研究与破解,检测出靶标环境中的预设安全挑战或者未预期安全漏洞,攻破靶标环境获取 Flag 进行得分。Break 环节采用动态积分方式(即题目分值随解出队伍数量增加而减少,队伍总分也会随之变化)。Break 允许选手重置靶机,一般最多允许重置 5 次。
Fix(修复)
这个和攻击有点区别,每个比赛修复方式不同,如有些是通过SSH连接主机进行修复,有些则需要编写update.sh(例子:图一)然后上传脚本,通过运行脚本替换文件或删除文件在服务器上进行修复。同样的Fix也是动态积分+允许重置靶机,一般重置五次,上传后一般会实时check(或等待一轮时间),check未修复一般不扣分,只在check点无法正常访问,服务宕机等异常情况扣分(一般不会实时扣分,只会在一轮check过后扣分,所以可以随意进行上传脚本修复的过程,在一轮时间前恢复就可以) 比赛题目
一般只有Web&Pwn 相信看到背景大家也知道awd+和普通的awd有什么区别了,一个是选手之间的斗法,一个是静态攻防(高情商:人机对抗),所以要了解的知识不同,准备的东西也不同,下面我们来进入正题。
0x1 前期准备
由于我是个web手,所以对pwn不熟,我这就不描述pwn了(毕竟pwn大佬们也不会看我这种文章哈哈哈哈哈哈哈,能看的都是来指正我错误的~)
1、考点:
web:JavaScript原型链污染、Go语言(如湖湘杯线下)、SSTI、CBC翻转字符攻击和常见考点(反序列化、Sql注入,重置密码、越权等逻辑漏洞等等),简单通俗点来说就是一个线下的CTF解题赛
2、防守:
一般在平台可以下载或直接通过SSH连接主机Down下来, 少部分会让你黑盒渗透,然后下载源码进行加固。防守的过程其实也简单,这个过程倒是和普通的CTF的 防守一样,找到漏洞点进行删除就好,所以具体不多说,参考普通CTF加固来进行准备,如IDE啊,go环境啊,npm的环境等等,主要是需要能让服务在本地跑起来,才好去进行验证是否加固成功。
3、攻击:
上面也说了,在防守阶段已经提供了源码,我们就可以按照白盒渗透的方式进行审计,找到漏洞点进行攻击,同样准备的东西也是GO环境、NPM环境、PHP环境等能本地调试的工具和一颗聪明的大脑
4、队员T0:
PWN手+全栈+Web手(三个全栈肯定是最牛逼,但是全栈大佬可遇不可求啊T-T) T1:PWN手*2+Web手 T2:PWN手+Web手*2 T3:Web手*3(这里不说3PWN手,因为基本会pwn的都会web点,但web手基本不打pwn) T99999*n:摸鱼大佬*3
人永远是左右比赛的关键因素,现在大部分比赛都围绕着PWN来举办,所以pwn手肯定是最优选,就如我前面说的,会pwn的基本都会点web,就算是3个pwn也能在比赛中拿到比较好的成绩,原因是web的加固实在实在实在是太简单了,实在攻不下来能防住也是很重要的。
0x2 比赛阶段
这里重点说比赛中遇到的坑,因为其实能看到这文章的肯定是基本到准备到线下比赛的,技术肯定都有的,只不过会碰到很多奇奇怪怪的坑。但这里只说防守,攻击没有什么坑,该是啥漏洞就是啥漏洞,毕竟代码就在那里变不了。
防守流程:
一定一定一定要熟悉linux每个命令,最重要的是中间件的重启命令,题目一般会给题目的根目录,比如给出题目根目录是:/app/ 你下载下来的源代码目录+根目录就是你操作的目录 比如这个:我要操作web文件夹的东西,就是/app/web/* 大家也可以看到,这个是整个docker下载下来的,里面有服务启动的语句 我们就可以根据这个语句来启动服务,但是,npm和go都是需要重启服务器的,我们知道了拉起命令,怎么暂停服务呢?最常见的方法,用ps去找进程然后kill掉,比如我要重启JavaScript的环境,肯定是先杀进程
或者根据目录去杀 ps -ef|grep app|grep -v grep |awk '{print $2}'|xargs kill -9复制代码
然后去替换或者删除漏洞文件 mv -f index.js /app/index.js复制代码
最后拉起 <blockquote>npm run dev 复制代码
这里有个小tips,要根据服务启动的用户去启动,例如weblogic不能root启动,不能盲目使用sudo命令,以及就是权限问题,最好直接给777权限 sudo chmod -R 777 /app/*复制代码
最后就是打包,一般服务器是接受tar包,并且会给相关说明,如何打包及如何接受 ## update.tar.gz目录结构```# tree update/update/├── some_files└── update.sh```### update目录打包为update.tar.gz命令```tar zcvf update.tar.gz update```### 注意事项+ web目录或pwn目录请多留意题目描述、题目附件。+ 修改的原则尽可能只在漏洞相关的文件上,请勿更改其他文件。+ 执行脚本的文件名必须是update.sh+ update.sh的执行权限,平台解包后自动对其`chmod +x`+ 请注意update.sh是Linux文件格式。DOS转化为Linux文件格式,可以使用dos2unix命令。+ 请勿添加无关命令,所有上传包都会备份。+ 请注意耗时。
## update.tar.gz目录结构
```
# tree update/
update/
├── some_files
└── update.sh
### update目录打包为update.tar.gz命令
tar zcvf update.tar.gz update
### 注意事项
+ web目录或pwn目录请多留意题目描述、题目附件。
+ 修改的原则尽可能只在漏洞相关的文件上,请勿更改其他文件。
+ 执行脚本的文件名必须是update.sh
+ update.sh的执行权限,平台解包后自动对其`chmod +x`
+ 请注意update.sh是Linux文件格式。DOS转化为Linux文件格式,可以使用dos2unix命令。
+ 请勿添加无关命令,所有上传包都会备份。
+ 请注意耗时。
上传后即可进行校验 最最最最重要的事情!!!一定要快!!!否则少了前几轮check的分数基本就追不上了
防守技巧:
一般D盾啥的都扫不出来,普通的代码审计工具不如人工定位,直接放例子 在不看代码的情况下来评判威胁度,那肯定admin文件夹是威胁系数最高的呀!直接干掉!干掉后再看check情况,如果干掉还不行可以在看看其他代码,依次先排除最危险的 第二个例子: 一个go语言的代码,先看威胁点,那肯定是执行命令啊, <blockquote>"os"复制代码
通过这个去找命令执行点,关键词: <blockquote>bash复制代码
直接批量替换,同样的更新完文件再上传check,check不过再检查 第三个例子: 一个JavaScript的代码,直接删入口点,稳妥简单
注意!这些技巧仅在为了前两轮可以更好得分!如果有限制上传次数的这个方法只能用一次!后期还是需要本地调试的!
0x03 总结
1、速度!速度!速度!重要的事情说三边,速度一定是第一位,但是注意不要破坏服务导致宕机扣分,就算破坏了也不要在准备check的时间破坏,给恢复留时间 2、心态第一,不急不躁,队长要安抚好队员的情绪,毕竟比赛只是学习的一个过程 3、能打进线下的基本都是有实力的,可能会有某些代打进的社会队,一部分划水,一部分大佬,一部分平常人,目前看文章的老板们是那种呢~ 4、比赛有时候是攻击和防守分开,每个3个小时,也可能一天然后攻守兼备的情况,如果是攻守兼备优先防御后攻击,防御简单于攻击,毕竟攻击payload也不是一时半会能写出来的,能拿到前几轮的分才是王道。 5、pwn大佬悄咪咪的说:可以上通防(至于怎么找,,嘿嘿) 6、只有前几轮拿分了才有绝对的话语权!(能在前三轮拿分做了三题都可以后期直接睡觉了!) 最后就是希望大家能在比赛中得到更好的成绩啦~(一天都比赛那种大佬们就别卷了行吗!!我就想中午的时候好好吃个饭!!你们那些饭盒摆旁边就开始敲代码的!!不饿吗!!!)
最后的最后!再次感谢船山院士的Yeuoly、小浪及其他的各位,公众号:衡阳信安
以及我的团队: Day1安全团队以微信公众号为平台持续输出渗透测试、代码审计、Windows逆向等内容,致力于回馈安全社区,提高网络安全普及程度
使用道具 举报
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|安全矩阵
GMT+8, 2025-4-23 15:11 , Processed in 0.012623 second(s), 18 queries .
Powered by Discuz! X4.0
Copyright © 2001-2020, Tencent Cloud.