看雪·众安 2021 KCTF 秋季赛 | 第五题设计思路及解析


攻击方排名前10如下:
已开放赛题的5支防守队伍排名如下:



出题团队简介

赛题设计思路
自定义的简陋 Hash 算法,用以对输入的用户名进行处理。 一个基于多项式商环的 RSA 算法。因为多项式相较于整数更加易于分解,故而可以还原得到输入。 一个随机生成的 16 轮 Feistel 结构的变换。
主要流程

数据结构
struct Poly {
PolyBlock blocks[6];
Poly() :blocks() {}
PolyBlock& operator[](int i) {
return blocks[i];
}
void reset(){
for(int i = 0; i < 6; i++){
blocks[i].reset();
}
}
};
struct PolyBlock {
uint8_t ele[3];
PolyBlock() : ele(){}
void reset() {
ele[0] = 0xf7;
ele[1] = 0x31;
ele[2] = 0x89;
}
//省略部分代码
PolyBlock& operator+=(PolyBlock& rhs) {
this->set<3>(((*this).get<3>() + rhs.get<3>()) % 61);
this->set<0>(((*this).get<0>() + rhs.get<0>()) % 61);
this->set<2>(((*this).get<2>() + rhs.get<2>()) % 61);
this->set<1>(((*this).get<1>() + rhs.get<1>()) % 61);
return *this;
}
friend PolyBlock operator+(PolyBlock lhs, PolyBlock& rhs) {
lhs += rhs;
return lhs;
}
//省略部分代码
};
blockHash
// 输入是长度为 9 的 uint8_t 的数组 data,也就是 3 个 PolyBlock。输出是 1 个 PolyBlock (也就是 3 个 uint8_t)。
void blockHasher::fire(){
uint64_t x = *(uint64_t*)hh.data;
x ^= hh.data[8];
x ^= x >> 12;
x ^= x << 25;
x ^= x >> 27;
x *= 0x2545F4914F6CDD1DULL;
*((uint8_t*)result) = x&0xFF;
*((uint8_t*)result+1) = (x >> 8)&0xFF;
*((uint8_t*)result+2) = (x >> 16)&0xFF;
toSignal->decDep();
}
StrHasher
PolyFeistel
一层随机 Feistel 结构如图所示:(随机生成的结构展示,与实际中具体的数据变换不同)

PolyRSA
总结
Username:56DF4D8D86305660
SN: 4A2CD38229906B47E4C04723C0BEAD86A599
Username:KCTF
SN: 4E6B0C83AA2E6B6E946477B2149A8816D730
往期解析
1、看雪·众安 2021 KCTF 秋季赛 | 第二题设计思路及解析
2、看雪·众安 2021 KCTF 秋季赛 | 第三题设计思路及解析


第六题《窥伺者谁》正在火热进行中,
延伸阅读
-
看雪·众安 KCTF赛况直播 | 战况升级!比分逐渐拉大
看雪·众安 2021 KCTF秋季赛 已于11月15日中午12点正式开赛!第9题《万事俱备》已经持续2天。现在跟随我一起看看赛况如何吧!截至发文,目前该题围观人数多达927人,已有4支战队攻破此题!分
-
看雪·众安 KCTF赛况直播 | 白热化!第八题《群狼环伺》谁先拿下?
看雪·众安 2021 KCTF秋季赛 已于11月15日中午12点正式开赛!今天中午12点,第8题《群狼环伺》已正式开战!截至发文,该题共计围观人数:325,攻破战队数:0截至发文防守方总排名如下:攻击
-
看雪·众安 2021 KCTF 秋季赛 | 第六题设计思路及解析
看雪·众安 2021 KCTF秋季赛的第六题《窥伺者谁》已于今天中午12点截止答题,经统计,本题围观人数多达1080人,共计6支战队成功破解。恭喜v3r1t4s501用时19720秒拿下“一血”,接下
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- MinIO 开源的对象存储服务器
- ddns-go 简单易用的 DDNS
- 普京下令各部门机构设立IT安全部门
- 持续助力AI创新,高通创投再次加持三家AI垂直创新企业
- 在Z|瑞数信息高薪诚招运营商、政企、金融等行业大客户经理
- 中兴获“自由”,结束美国 5 年合规观察期!
- 硬件工程师年薪26万美元、软件工程师30万,在谷歌打工“香”吗?
- 华为郭平:开启绿色和数字的价值转型新征程
- 人物 | 胡峰:职场十四年投资理财与网安管理体悟尤深
- 在看 | 一周网安回顾 2020.1.16~1.22
- 技术沙龙|赋能企业数字化转型,移动云云原生应用架构实践
- 手机浏览器地址栏欺骗漏洞曝光,无法有效查看SSL证书是导火线!
赞助链接