看雪 2022 KCTF 秋季赛 防守方规则
看雪CTF(简称KCTF)是圈内知名度最高的技术竞技之一,从原CrackMe攻防大赛中发展而来,采取线上PK的方式,规则设置严格周全,题目涵盖Windows、Android、iOS、Pwn、智能设备、Web等众多领域。
KCTF采取动态积分模式,使每道题的分数随着赛事的发展而变化,比赛结束的分数才能决定最终比赛结果。
看雪CTF比赛分为两个阶段:
第一阶段是防守篇,防守方根据比赛要求制作题目,根据题目在比赛中的得分评选优胜者。
第二阶段为攻击篇,攻击第一阶段的题目,攻击成功题目后获得相应的攻击得分。累计攻击方在每道题上的攻击得分以获得攻击方总得分,并评选优胜者。
既给了防守方足够的施展空间,也避免过度浪费攻击方的时间。从攻防两个角度看,都是个难得的竞技和学习机会。
KCTF比赛历史悠久、影响广泛。自2007年以来,看雪已经举办十多个比赛,与包括金山、腾讯安全、腾讯TSRC、360、阿里、京东、WiFi万能钥匙、安恒、深信服、众安科技等在内的各大公司共同合作举办赛事。比赛吸引了国内一大批安全人士的广泛关注,历年来CTF中人才辈出,汇聚了来自国内众多安全人才,高手对决,精彩异常,成为安全圈的一次比赛盛宴,突出了看雪论坛复合型人才多的优势,成为企业挑选人才的重要途径,在社会安全事业发展中产生了巨大的影响力。
2022秋季赛规则更新列表:
一、活动时间
防守方出题:2022年09月01日 ~ 2022年11月12日(防守方题目准备阶段)
攻击方比赛:2022年11月15日 ~ 2022年12月15日(截止时间根据攻击方比赛情况而定)
二、活动地点
看雪CTF 官方网站:https://ctf.pediy.com/
2022 KCTF 春季赛 比赛页面:https://ctf.pediy.com/game-team_list-18-29.htm
三、主办方
看雪学苑:https://www.kanxue.com
合作伙伴:待定
四、防守方比赛赛制
本届看雪CTF团队赛为线上赛,由论坛会员自由组成攻、防两方团队,每个团队人数不超过 5人。由防守方出题,攻击方夺旗。
赛题设计背景简介:待定
1、 防守方提交题目
参加防守的团队,每个团队需要提供一个防守题目到提交区:https://bbs.pediy.com/forum-122.htm(题目名称请注明2022 KCTF春季赛)。评委审核通过后方可作为防守方参赛,审核结果在攻击赛开始前一天公布。
2、 赛期
规则:顺序发题、弹性赛期
防守题的赛期根据被破解情况决定,最少1天,最多4天。
一律中午12点发题。发题当天记作第0天。
若第i天上午6点该题被破解次数大于等于5^(3-i),则在第i天中午12点结束该题,发下一题。
解释:
发题后的第1天6点,若破解次数少于25人,则继续比赛;
发题后的第2天6点,若破解次数少于5人,则继续比赛;
发题后的第3天6点,若破解次数少于1人,则继续比赛;
以上任意一天继续比赛的条件不满足,就中午12点换下一题;
(6点至12点之间的破解,依然有效) 发题后的第4天中午12点,此题一定结束。
3、 积分规则
防守题积分,分为难度值积分、火力值积分和精致度积分三种。攻击方积分是根据其破解战绩而计算得到的。
注:攻击者不能攻击自己提交的题目
3.1 难度系数评估
基本原则
计算方法
每道题的原始难度系数 = - log(k*sigma(1/Bi)/T),其中T是此题赛期(天数),k是此题被破解的次数,Bi是此题的被破解时间,i从1到k;
将每道题的原始难度系数线性归一化到[0,1],即得到每道题的难度系数。(在比赛中,尚未被破解的题(含尚未开始比赛的题),暂计其难度系数为1)。
解释
3.2 火力值积分
基本原则
计算方法
对每道题,分别计算每个破解者的攻击火力系数 = 此题一血时间 / 此攻击方破解此题的时间。得分在[1,0)之间;
对每道题,累计每个破解者的攻击火力系数之和,得到此题累计攻击火力系数,无人破解的题,累计攻击火力系数为0;
根据每道题(除签到题以外)的归一化难度系数,计算所有破解者在此题上的火力值 = 此题难度系数 * 累计攻击火力系数 * 100;
根据每道题的火力值排序,评选本届比赛“火力焦点奖”。
解释
3.3 难度值积分
基本原则
计算方法
出题难度值 = 出题基本分(50分) + 难度系数 * 难度加权分(150分);
考虑到多解违规和无人能解的情况,此题的最终难度值 = 出题难度值 * (1 + 一血加权系数) * (87% ^ n),其中n为被发现多解的次数,n最大值为5(大于5时,视同为5);
若无人破解此题,则一血加权系数为20%;若有人破解成功,则一血加权系数为0;
根据每道题的难度值排序,评选本届比赛“最佳坦克奖”;
若防守方积分一样,以提交题目时间来排序,最早提交题目的胜出。
解释
最简单的题的出题难度值是:出题基本分;最难的题是:出题基本分 + 难度加权分;
若被1个攻击方发现多解,则此题难度值 = 出题难度值*87%;
若被2个破解方发现多解,则此题难度值 = 出题难度值*87%*87%=出题难度值*0.7569;
若被3个及以上破解方发现多解,则此题难度值 = 出题难度值*87%*87%*87%=出题难度值*0.658503;
若被4个及以上破解方发现多解,则此题难度值 = 出题难度值*87%*87%*87%*87%=出题难度值*0.57289761;
若被5个及以上破解方发现多解,则此题难度值 = 出题难度值*87%*87%*87%*87%*87%=出题难度值*0.4984209207;
一血的定义是指:题目第一次被破解;若无人拿下此题一血,则此题获得额外20%加分。
3.4 攻击方积分
基本原则
计算方法
攻击方在某一道题上的得分 = 此题出题难度值 * (此题一血时间/此攻击方破解此题的时间 + 1) / 2 * (1 + 一血加权系数);
攻击方总积分 = 攻击方在其破解的每道题上的得分之和。
解释
若攻击方是此题的一血破解者将获得:此题出题难度值的20%的额外加分。其他破解者无一血加分,且得分依破解时间递减,理论上最少将获得此题出题难度值的一半;
如果未破解此题成功,则在此题上不得分;
攻击者在某题上的得分,不因此题出现多解而受影响。
3.5 精致度积分
基本原则
计算方法
防守题原始长度指标 = log(在比赛中供攻击方下载的题目包的文件长度),以Byte为单位。长度不足1024B的,计做1024B;
将每道题的原始长度指标线性归一化到[0,1],即得到每道题的长度指标;
精致度积分 =出题基本分(50分) + (难度系数 * (1 - 长度指标))*450;
根据每道题的精致度排序,评选本届比赛“精致奖”。
解释
具有一定难度且代码较短的题目,会得到较高精致度积分;
攻击方下载的题目包:可以是压缩的,压缩格式为ZIP或RAR。由参赛者提供;
题目下载包必须包含题目正常运行所需所有文件;
比赛规则已经指定了多款OS作为运行平台。若题目需要其它软件支持,必须将其带入到题目包中。例如:题目需要一个特殊的lib,则需要带上这个lib。
五、征题说明
1、征题范围
CrackMe/Reverse(Windows、Android、linux、iOT等)、PWN、WEB、Crypto、Misc 等相关题目。
2、征题数量
将从征集的题目里抽选出一定数量较为优秀的题目来参与KCTF 赛,其他符合规则的题目将录入平台数据库备用。
3、征题期限
2022年09月01日 ~ 2022年11月12日
4、征题要求
A.所有题目必须是原创并且没有公开过。
B.防守方应打包提交以下内容:
团队名称、团长QQ、参赛题目、题目答案(攻击脚本)、详细的题目设计说明和破解思路以及其他需要说明的各个问题。提交资料不完整的不予通过!
C.题目提交到看雪CTF提交区:https://bbs.pediy.com/forum-122.htm(题目名称请注明2022 KCTF 春季赛)
5、题目规则
Android、linux、iOT逆向题的设计规则,请参考Windows逆向题规则。
5.1 关于Window平台CrackMe设计规则
Windows平台题目规则有两个方案,参赛者可以任选一种方案来出题参赛。如果选手采用方案二参赛,必须在提交题目时明确参赛模式,否则默认以方案一模式参赛。
提交格式:
1 2 3 4 5 6 7 8 | ├─Readme.md------------|题目描述文档
├─Writeup.md-----------|writeup
│
├─attachments----------|题目文件
├─src------------------|源文件
│
└─files----------------|writeup包含的图片等文件
|
5.1.1 Windows方案一
5.1.1.1 关于注册码
1) CrackMe应有且仅有唯一注册码,除给定的注册码外。如果 CrackMe 被发现多解,则根据积分规则“3.3 难度值积分”扣分。CrackMe的注册码字符集限定为['!','~'],即ASCII码范围是[33,126],共94个可选字符。不允许将注册码绑定硬件ID。
2)CrackMe界面
参赛CrackMe界面必须有且仅有注册码输入项,例如类似的(界面仅供参考,可以是控制台):
3)CrackMe输入
4)CrackMe输出显示
5.1.1.2 算法规则
1)不鼓励穷举
在当前技术条件下,序列号从理论上讲,是可逆或可求出来的;
如果破解者必须通过穷举才能得到注册码的,设计文档里一定要描述清楚,并且将穷举代码和程序发给评委验证。评委验证时,在当前主流硬件配置条件下,如果穷举时间超过30分钟则不通过。
如果在当前主流硬件配件条件下,CrackMe的启动时间超过10秒也不通过,需要返回修改。
2)其他限制条件
参赛 CrackMe 必须可以在 WIN10/32、WIN10/64 、WIN7/32、WIN7/64、WINXP其中一种系统正确运行。
参赛 CrackMe 不可使用第三方保护工具来保护CrackMe,例如第三方壳和VM。
参赛 CrackMe不可使用VM来保护,包括第三方VM和自己写的VM(注:若要用自己实现VM参赛,请按 5.2.2方案二 规则提交题目)。
参赛CrackMe执行后,不能干扰破解者正常使用电脑(比如关闭显示器、禁用键盘鼠标、关机、暴力占用内存cpu资源使电脑死机、破坏电脑文件等类似操作不允许),但允许采用技术手段关闭调试器,防止破解者破解。
参赛CrackMe设计的总体原则是绿色安全,不可含木马或 rootkit,没有任何危险或恶意程序,不能对系统进行破坏,可以正常结束,结束后不能给系统留下垃圾(比如临时文件要删除,驱动要卸载干净),不可使系统重启。
参赛CrackMe如果有任何危险或者恶意行为,ban ID。如果有杀软或者360等安全软件报CrackMe有异常的行为,评委有权要求参赛选手解释。
参赛CrackMe 不可以联机到网络,或使用服务器注册,CrackMe必须可以在单机运行。
所提交的参赛CrackMe运行的文件包括.exe.dll.sys等一起在不打包压缩时总大小不超过1M。
如果评审有怀疑,例如怀疑加壳伪装,可以要求队伍提供CrackMe 的源码。
如果评审认为 CrackMe 使用了不合理的设计,或违反比赛精神,便会判定CrackMe无效,取消奖品和名次,并把参赛者提交的技术文件,在论坛公开,让会员公开讨论。
5.2.2 Windows方案二
5.2.2.1 关于用户和序列号
1)防守方发布的Crackme应允许输入用户名和序列号,并提示用户名和序列号是否匹配正确。 例如类似的(界面仅供参考,可以是控制台):
2)用户名和序列号要求
防守方在发布CrackMe时,应向大众公开一组用户名和序列号,即
“ Name/Serial ”。
其中公开的这个用户名“Name“,必须是该CrackMe文件的
hash值。
hash算法指定为SHA256,用户名为hash结果的前64bit的16进制大写文字。
例如:参赛CrackMe.exe文件的hash结果是
50be38745d82d93f3a974701e86c1cafcbc2ec83d1f1913d216079022ba7317f
则用户名 “Name“ 应为 50BE38745D82D93F
如果CrackMe不止一个文件的话,计算hash时应包含CrackMe的所有文件(第三方共享库除外)。参考hash计算工具:https://emn178.github.io/online-tools/sha256_checksum.html
B)判胜条件
C)规则限制
干净环境中,当前主流硬件配置环境下,10秒内出提示且不能虚假提示。
KeyGen算法不能基于“未在CrackMe中公开的秘密信息”;如果需要穷举,则穷举时间在目前主流机型中必须小于30分钟。
不能依赖网络、不能依赖硬件。
禁止使用第三方保护工具、禁止恶意破坏机器。
参赛 CrackMe 允许用自己未公布的壳或VM或其他手工处理的方法来保护程序(VM或壳的嵌套最多2层),但必须将保护该CrackMe所使用的壳或VM或其他手工处理的方法与CrackMe一同提交,评委审核通过后方可参赛。所提交的壳或VM或其他手工处理的方法将在赛后向广大会员公开。凡违反该比赛规则的CrackMe将作废,设计该CrackMe的会员将取消本届比赛的参赛资格。
关于VM定义: 所有掩盖原始程序、以解释方式执行的保护方式都可统称VM。比如 JAVA vm也算VM,其它模拟器也算VM。赛题中,壳内壳外的所有VM加起来,不要超过2层。
文件尺寸不超过10M;
同一用户名不应有多个序列号,否则根据积分规则“3.3 难度值积分”扣分
禁止在Crackme中为特定用户名(“KCTF”)设立独立验证路径,以绕开hash用户名的验证路径 。
序列号字符集限定为['!','~'],即ASCII码范围是[33,126],共94个可选字符。
不限制使用套娃。可以使用任何数据和代码变换。
不限制线索隐藏方式。可以将线索以任何形式置于CrackMe的任何位置。
5.2 关于Android/iOS平台CrackMe设计规则
参考5.1Windows平台规则(规则一和规则二),确保CrackMe能在常见移动端稳定运行。
5.3 关于PWN的设计规则
1)题目 规则
设计一个存在漏洞的程序。
漏洞包括不限于堆栈溢出、UAF、DOUBLE FREE、OFF BY ONE、格式化、逻辑错误等漏洞。
提供稳定的漏洞利用EXP,攻击者根据漏洞攻击成功后能获得flag,flag格式flag{***}。
题目以docker形式提交,并提供详细的部署方法。
提交格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ├─Readme.md--------------|题目描述文档
├─Writeup.md-------------|writeup
│
├─attachments------------|题目文件
├─deploy-----------------|online型题目部署脚本
│ └─docker_for_pwn-------|pwn题示例
│ │ Dockerfile
│ │ xctf.xinetd
│ │
│ └─bin
│ pwn
│ flag
│
│
└─files----------------|writeup包含的图片等文件
|
2)其他限制条件
5.4 关于智能硬件PWN设计规则
题目设计规则:
设计一个可以运行于模拟器如qemu中基于uboot的arm32位程序。
该程序能够通过uboot引导并稳定执行。
该程序可设计为存在漏洞程序、crackme程序等。
参赛者可以解题成功后获得flag{*********}。
设计者需提供可以运行设计程序的qeum版本信息、以及让uboot成功运行起来的必要信息(如模拟的目标板、内存等等)。
设计者还需要提供已经设计好的uboot二进制文件、比赛程序、以及解题思路及答案。
5.5 关于WEB题目设计规则
1)规则
提交格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | │ Readme.md-------------|题目描述文档
│ Writeup.md------------|writeup
│
├─attachments------------|题目文件
├─deploy-----------------|online型题目部署脚本
│ │
│ └─docker_for_web-------|web题示例
│ │ Dockerfile
│ │ run.sh
│ │
│ └─bin
│ index.php
│
└─files----------------|writeup包含的图片等文件
|
2)其他限制条件
5.6 关于crypto题目设计规则
密码学方向的考题在CTF中被归为Crypto类型,找出隐藏在密码学算法中的flag。
5.7 关于misc题目设计规则
MISC,意思是杂项,混杂的意思。分析文件,找到隐藏文件或数据流中的flag。
杂项大致有几种类型:
六、评委团队
评委成员:kanxue、gjden、Editor、wx_磐正
七、奖项
本次比赛设置4类奖项:
最能抗的 :最佳坦克奖
实际吸收伤害最多的 :火力焦点奖
题目短小并且最能抗的 :精致奖
人气最旺的 :最佳人气奖
综合创新评价 :新思路奖
防守方奖项
注意:
防守方奖项设3类:最佳坦克奖、火力焦点奖、精致奖(*奖品价值:最佳坦克奖>火力焦点奖>精致奖)
同一战队获奖类型,不可重复。若已获得靠前类别奖项,则不参与后续的评定。
*解释:
若获得最佳坦克奖,则不参与火力焦点奖、精致奖评定
若获得火力焦点奖,则不参与精致奖评定
同时,该类别奖项将按名次顺延给下一战队。
最佳坦克奖:
Apple iPhone 14 (A2884) 256GB 午夜色 支持移动联通电信5G 双卡双待手机
参考链接:https://item.jd.com/100038004399.html#crumb-wrap
解释:根据防守方获得的“3.3难度值积分”进行排名,取第一名。
数额:一名
勋章+证书
火力焦点奖:
解释:根据防守方获得的“3.2 火力值积分”进行排名,取第一名。
芝杜ZIDOO Z1000PRO 4K HDR10+蓝光高清硬盘播放器 家庭影院机杜比视界硬盘播放器
参考链接:https://item.jd.com/10025880569824.html
数额:一名
勋章+证书
精致奖:
华为HUAWEI WATCH GT Runner 华为手表
参考链接:https://item.jd.com/100029206612.html
解释:根据防守方获得的“3.5 精致度积分”进行排名,取第一名。
待定
数额:一名
勋章+证书
攻击方奖项
根据攻击方获得的 “3.4 攻击方积分”进行排名,取前一、二、三名,分别对应一等奖、二等奖、三等奖。
一等奖:
Apple iPhone 14 (A2884) 256GB 午夜色 支持移动联通电信5G 双卡双待手机
参考链接:https://item.jd.com/100038004399.html#crumb-wrap
攻击方一名
勋章+证书
二等奖:
芝杜ZIDOO Z1000PRO 4K HDR10+蓝光高清硬盘播放器 家庭影院机杜比视界硬盘播放器
参考链接:https://item.jd.com/10025880569824.html
攻击方一名
勋章+证书
三等奖:待定
华为HUAWEI WATCH GT Runner 华为手表
参考链接:https://item.jd.com/100029206612.html
攻击方一名
勋章+证书
幸运奖
防守方(未得奖战队)+攻击方(4-10名)
看雪2022款 T-shirt 1件
最佳人气奖
评选对象:2022 KCTF秋季赛 参赛战队(包含防守方所有战队+攻击方前20名战队)
芝杜ZIDOO Z9X 硬盘播放机4K HDR 3D杜比视界蓝光高清硬盘播放器无损音乐播放器 Z9X-背光红外遥控器
参考链接:https://item.jd.com/10025854368263.html
评选方式:登陆看雪账号,并为喜欢的战队投票,每支战队可投一票。
投票时间:比赛结束后一周内
新思路奖
评选对象:2022 KCTF春季赛 参赛防守方战队
芝杜ZIDOO Z9X 硬盘播放机4K HDR 3D杜比视界蓝光高清硬盘播放器无损音乐播放器 Z9X-背光红外遥控器
参考链接:https://item.jd.com/10025854368263.html
评选方式:
1、选手投票(占比40%):在KCTF答题页面投票,只有提交答案的选手和精华会员才可投票。
2、看雪KCTF专家评审团投票(占比60%):评审团成员投票,每人一票。
投票时间:比赛开始,直到比赛结束后一周
踩楼有奖!!!!
第六届安全开发者峰会(2022 SDC)早鸟票一张
参与方式:下方留言你对2022 KCTF的建议、看法、想法等,若所踩楼层与系统内置的中奖楼层匹配上,立即显示中奖。
注意事项:
1. 每个ID只能获得一次奖励,踩楼帖只能回复一帖。
2. 严禁用马甲参与活动,一经发现视为放弃参加此活动。
八、致谢
感谢版主 看场雪 设计KCTF比赛规则及积分排行!
KCTF2022组委会
2022/9/23
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2022-12-2 13:19
被kanxue编辑
,原因: