Java学到一半,因为ciscn进线下了,是awdp和isw赛制,所以跑去学内网渗透了
本来以为会有云安全啥的,但是没有
题目质量都很高,主要是输在了经验和意识

贴个照片嘻嘻嘻
上午的awdp,有一道php的反序列化漏洞,又有下载和上传以及读取
我的重点一直放在单独的每个功能点,没有把它们串起来
反序列化那里其实加一个__wakeup就行,一直没想到!
前几轮加分一直没吃到
下午的isw,队里没有pwn手,唯一一道shiro打下来了,然后注内存马,上vshell,结果卡在提权,赛后交流才知道是个内核提权漏洞pwnkit或者打smb
另外两题,有一个pico的简易http服务器,是个老cve,主要是路径穿越,然后读到一个pwn附件交给pwn手发力,可惜队里没有pwn
另外一个是文件浏览,有个agent.zip
下载下来然后rpc连接,这个真不会,还是太菜了真的
接下来还得继续努力学Java以及其他技术,争取下一届杀入决赛
写这篇文章还有一个目的,就是简单地给各位入门的师傅介绍一下awdp赛制,避免比赛遇到之后发懵
AWDP(Attack and Defence Plus):攻防对抗(AWD)升级
在awd中,每个队伍都会获得一个Linux服务器,叫做靶机
开赛后会给出靶机的信息,队伍内的选手需要连接到靶机
比如这样
连接信息
域名:
zjyxkb341-3.awd231-1.ncc.nssctf.cn:81
SSH端口:
22997
SSH用户:
nss
SSH密码:
hkxqomnm29z9
有给域名的,也有直接给IP的
这里以nss的域名形式为例
zjyxkb341-3.awd231-1.ncc.nssctf.cn:81
这是服务器上运行着的web程序地址
是一个存在漏洞的网站
但是我们不是要攻击它
而是要修复它的漏洞
这个网站运行在我们的靶机上,连接上靶机之后即可对源代码进行修改/部署防火墙waf/删除webshell后门
开赛一般分为fix和attack阶段
fix阶段,各自加固靶机,防止接下来被攻击,一般时间为10~30分钟
attack阶段,主办方一般会给出其他队伍的靶机地址,此时可以开始对他们发起攻击,植入webshell,不死马,从而读取他们的flag并且提交
(这里注意,所有选手的靶机上运行的web源代码都是一样的,可能会存在一些我方队伍修了,但是对手没修的漏洞)
对手的flag被我们提交,对手队伍会被标记为本轮被攻击,导致掉分
这种赛制真正实现了攻防对抗,既要攻击,又要防守并且迅速排查被植入的后门
但是太模板化,导致了一些问题:
学过web的都知道有抓包这种技术
如果赛前有人编写了一个类似的程序,实时监控靶机网络流量
检测到即将被攻击(已植入webshell,但是还没提交flag)时
直接定位植入webshell的那个数据包,将攻击者地址和我方靶机地址互换
这样,他们的靶机也会被植入webshell
简单来说:“打我,你也掉分”
这样就已经失去意义了
在这种情况下,awdp赛制的出现解决了问题
awdp,不再是选手之间的攻防对抗,而是选手与平台的博弈
awdp同样分为两个阶段,fix和break
fix和break的题目是一样的
break阶段,就像正常的CTF一样,开环境,打题,拿flag,提交
而fix阶段有大不同,fix阶段可以下载题目的源代码
将其下载到本地,修改代码,进行漏洞修复(一般只有一个文件存在关键漏洞)
修改之后,编写补丁脚本并且将对应的修复后文件和补丁脚本一起打包压缩为tar.gz格式,上传到平台
平台会自动解压,并且运行写好的补丁脚本,将修复好的文件替换原文件,重启web服务(详见接下来的内容)
重启之后,平台会运行内置的攻击脚本,对修复后的网站发起攻击,如果攻击成功,则代表着选手修复失败
同时,平台也会对web服务的正常性进行检测,如果修复后,正常运行都做不到,也是不行的
补丁包示例(赛前主办方会给)
#!/bin/bash
mv index.php /var/www/html/index.php
假设index.php是你修复好的文件
那么将其和补丁脚本打包好之后(赛前主办方会给出打包命令)
上传到平台,平台在某个文件夹自动解压,解压后自动执行对应的补丁脚本
将当前解压目录的index.php替换掉原网站的同名文件
替换之后,攻击脚本执行,开始对网站发起攻击以及正常检测
攻击成功/健康检测失败,都意味着修复不成功,需要选手重新修复并上传
如果修复成功(攻击失败并且网站正常运行)
则自动获取加分
awdp不像CTF,它按照轮次进行加分,也就是说,修复/攻击的越早,加的分越多,而且接下来每一轮都会有加分(按照一定的百分比进行)
ciscn的题目,一题500分的web,第一轮完成fix和break两个环节的,到最后加到了1万分

下次加油!
评论(1)