再次睁眼,我躺在一只玩具熊上面。 [说明:本题是一道Windows逆向题]
突然这只玩具熊动了动:“醒醒,万金斯!”
我的脸上带着护具,我摸了一下脑后,是一个开关,我试图调了一下,突然升高的温度让我差点儿喘不过气来。
似乎是一个温控开关。
我的眼前出现一块蓝色显示屏,数字显示“18:10”,然后时间开始一分分向前。
“恭喜你来到最后的关卡。这次的任务是找出系统的创造者。”
听起来还挺简单的,不就是找个人嘛,之前那么难的关卡我都过来了,这算什么。
“你还有两个小时的时间,如果你在这段时间里不能完成任务的话,护具将升温把你变成系统的的程序,再也无法回到现实世界。”
我猛然意识到事情的严重性,再看看屏幕,留给我的时间已经不多了。
2.2.5 多解罚分 = 此题难度分 × 多解罚分系数(20% )。如果防守题被发现多解,则给防守方1次修改机会,并扣多解罚分。若修改后又多解,则下线退赛,攻击方在此题获得的成绩保留不受影响。
lelfei,业余的crack爱好者。学生时代对电脑产生了浓厚的兴趣,经历了很长时间的游戏沉迷后,开始慢慢转向学习技术,工作后自学了ASM,VB,VC,HTML,ASP,Python等语言的入门。工作原因上网较少,对单机的逆向分析、算法比较感兴趣,但是由于缺少系统的学习,水平处于“入行较早层次较低知识较杂”的阶段。
01 11 01 00 00 -03 01 11 01 01 -03 11 21 00 00 -03 00 00 00 31
01 01 01 00 00 -00 00 00 01 00 -01 01 00 00 31 -11 00 11 00 00
00 00 01 00 01 -00 11 00 01 00 -01 00 00 00 00 -01 00 01 01 01
00 01 01 00 11 -01 00 00 00 00 -01 00 00 00 00 -00 00 00 11 00
21 00 00 01 00 -00 00 00 00 01 -00 11 01 00 01 -00 00 01 00 00
31 00 00 01 02 -00 11 01 00 02 -11 01 01 00 02 -31 01 00 00 02
一楼:I(1,2)-(4,4)掉 I(4,5)-(3,3) X上
二楼:I(3,2)-(4,2)掉 I(1,3)-(5,1)砸 X下
一楼:I(4,2)-(5,2)掉 X(6,1)钥 I(3,3)-I(4,4) I(5,1)-(5,4) X上
二楼:X上
三楼:I(1,2)-(5,1)掉掉 X下
二楼:X下
一楼:I(4,4)-(4,2) I(5,1)-(5,2) I(5,4)-(3,3) X上
二楼:I(6,2)-(4,1) X下
一楼:I(5,2)-(5,1) X上
二楼:I(4,1)-(5,1) X下
一楼:I(4,2)-(5,4) I(3,3)-(4,4) X上
二楼:X上
三楼:I(5,2)-(5,4)掉 I(6,1)-(2,2) X上
四楼:I(2,3)-(1,3)砸 X下
三楼:I(1,3)-(1,4)掉 X下
二楼:I(1,4)-(1,5) I(5,4)-(1,4) X上
三楼:X(2,5)钥 X下
二楼:I(1,4)-(5,4) X上
三楼:X上
四楼:I(4,4)-(2,5)掉 X(1,5)钥 X下
三楼:X下
二楼:I(5,4)-(1,4) X上
三楼:I(2,2)-(5,1) I(2,5)-(4,1) X下
二楼:I(1,4)-(5,4) X上
三楼:X上
四楼:X(6,1)钥 X下
三楼:I(4,1)-(2,2) I(5,1)-(5,4) X上
四楼:I(2,1)-(5,5)掉 X上
本题解题思路由金左手战队 ccfer 提供:
.text:004B5370 sub eax, 004BA040h
.text:004B5375 test al, al
.text:004B5377 mov [ebp+ebx+var_264], al
...
.text:004B539E sub eax, 12h
.text:004B53A1 cmp eax, 5Dh
.text:004B53A4 ja loc_4B55EC
...
.text:004B53AA lea ecx, [ebp+var_1E4]
.text:004B53B0 mov [ebp+var_298], 1
.text:004B53BA call sub_4017A0
.text:004B53BF lea eax, [ebp+var_25B]
.text:004B53C5 lea ecx, [ebp+var_1E4]
.text:004B53CB mov [esp+2C8h+var_2C4], eax
.text:004B53CF lea eax, [ebp+var_264]
.text:004B53D5 mov [esp+2C8h+var_2C8], eax
.text:004B53D8 call sub_401BD0
02 13 00 00 07
07 04 05 0B 0A
09 08 0E 0E 0C
0C 12 13 11 01
36 16 15 15 1B
2B 19 18 1E 1C
1E 1D 32 23 20
20 27 26 24 24
2B 3B 29 29 2F
2F 2D 2C 33 32
31 30 37 36 34
34 2A 3B 39 3A
3C 2F 1C 3C 43
43 40 40 47 77
44 44 4B 4A 49
49 4F 4E 4D 4C
53 43 50 50 56
47 54 55 5B 58
5A 58 5F 5E 6C
4D 63 73 61 60
66 66 64 65 6A
6A 69 68 7E 6E
6D 6C 72 72 71
41 76 76 75 76
01 11 01 00 00
01 01 01 00 00
00 00 01 00 01
00 01 01 00 11
21 00 00 01 00
31 00 00 01 02
03 01 11 01 01
00 00 00 01 00
00 11 00 01 00
01 00 00 00 00
00 00 00 00 01
00 11 01 00 02
03 11 21 00 00
01 01 00 00 31
01 00 00 00 00
01 00 00 00 00
00 11 01 00 01
11 01 01 00 02
03 00 00 00 31
11 00 11 00 00
01 00 01 01 01
00 00 00 11 00
00 00 01 00 00
31 01 00 00 02
sub_402460()
{
...
if ( (v10 & 0xF) == 1 )
{
*((_DWORD *)v2 + 2) = x;
*((_DWORD *)v2 + 3) = y;
if ( (signed int)v10 >> 4 == 3 )
{
v23[20] = v19 ^ (v22 + y) ^ ((v22 + y) ^ v9) & 0xF;
v12 = *((_DWORD *)v2 + 0x65) == 1;
*((_DWORD *)v2 + 4) = 3 * ((*((_DWORD *)v2 + 4) + 2) >> 1);
if ( v12 && v19 == 3 )
{
v2[0x198] = 0x37;
v13 = 0x37;
}
else
{
sub_401AB0(v2 + 0x110, v2 + 0x110, v2 + 0x8C);
sub_401AB0(v2 + 0x13C, v2 + 0x13C, v2 + 0xB8);
sub_401AB0(v2 + 0x168, v2 + 0x168, v2 + 0xE4);
sub_4019F0(v2 + 0x194, v2 + 0x110, v2 + 0x13C, v2 + 0x168);
v13 = v2[0x198];
}
v14 = v2 + 0x32;
v15 = v2 + 0xAA;
v16 = v13 ^ v19;
do
{
v17 = v14 - 30;
do
{
v18 = (int)(v17 + 5);
do
*v17++ ^= v16;
while ( v17 != (_BYTE *)v18 );
}
while ( v17 != v14 );
v14 += 30;
}
while ( v14 != v15 );
}
}
return 0;
}
.text:004B563A cmp [ebp+ok_v3], 0D1B623CDh
.text:004B5644 jnz l_4B55EC_lost_
.text:004B564A mov [esp+2C8h+var_2C0], 16h
.text:004B5652 mov [esp+2C8h+var_2C4], offset sz_4BA024_win ; "恭喜你打败了幕后之王!"
01 01 01 00 00
01 01 01 00 00
00 00 01 00 01
00 01 11 11 01
21 00 00 11 00
31 00 00 01 02
DWORD get_crc(BYTE *lpData, int nLen,DWORD crc0)
{
DWORD crc = crc0;
BYTE t;
int i,j;
for (j=0;j<nLen;j++)
{
t = lpData[j];
if (t >= 30)
{
if (t >= 60)
{
continue;
}
t -= 30;
}
crc ^= t;
for (i=0;i<8;i++)
{
if (crc & 1)
{
crc >>= 1;
crc ^= 0xEDB88320;
}
else
{
crc >>= 1;
}
}
}
return crc;
}
int crack_crc()
{
int rv = 0;
DWORD i;
BYTE key_head[] = {0x01,0x12,0x13,0x06,0x3B,0x0B,0x0D,0x1E,0x06,0x17,0x3B,0x02,0x12,0x3B,0x01,0x10,0x1E,0x1E,0x10,0x06,0x3B,0x0D,0x0B,0x1E,0x06,0x10,0x17,0x0C,0x3B,0x0B,0x10,0x1E,0x10,0x1C,0x0C,0x17,0x3B,0x1A,0x12,0x1E,0x1C,0x11};
BYTE key_tail[] = {0x3B,0x12,0x10,0x3B,0x19,0x17,0x15,0x17,0x3B,0x05,0x06,0x07,0x17,0x12,0x18,0x3B};
BYTE key_mid[35] = {0};
BYTE positions[] = {0x01,0x02,0x05,0x06,0x07,0x0C,0x0E,0x10,0x11,0x12,0x13,0x17,0x1C};
BYTE num[sizeof(key_mid)];
DWORD crc_head;
DWORD crc_mid;
DWORD crc_target = 0xD1B623CD;
DWORD base = sizeof(positions);
for (i=0;i<base;i++)
{
positions[i] += 30;
}
memset(num,0xFF,sizeof(num));
crc_head = get_crc(key_head,sizeof(key_head),0x77777777);
printf("crc_head = %08X\n",crc_head);
DWORD delta = 0x80000000;
for (i=0;i<=0xFFFFFFFF;i++)
{
if (get_crc(key_tail,sizeof(key_tail),i+delta) == crc_target)
{
crc_mid = i + delta;
break;
}
}
printf("crc_mid = 0x%08X\n",crc_mid);
DWORD numlen = 0;
while(numlen < sizeof(key_mid))
{
if (crc_mid == get_crc(key_mid,numlen,crc_head))
{
printf("crc matched\n");
printf("key_mid[] = ");
for (i=0;i<numlen;i++)
{
printf("%02X ",key_mid[i]);
}
printf("\n");
return 1;
}
DWORD next = 1;
while (next)
{
next = 0;
for (i=0;i<sizeof(key_mid);i++)
{
if (num[i] == 0xFF)
{
num[i] = 0;
numlen++;
break;
}
else if (num[i] < base-1)
{
num[i]++;
break;
}
else
{
num[i] = 0;
}
}
key_mid[0] = positions[num[0]];
for (i=1;i<numlen;i++)
{
key_mid[i] = positions[num[i]];
if (key_mid[i] == key_mid[i-1])
{
next = 1;
break;
}
}
}
}
return rv;
}
往期赛题解析
* 2019 KCTF 总决赛 | 第九题《四季之歌》点评及解题思路
* 2019 KCTF 总决赛 | 第八题《龙都星劫》点评及解题思路
* 2019 KCTF 总决赛 | 第七题《东北奇闻》点评及解题思路
* 2019 KCTF 总决赛 | 第六题《三道八佛》点评及解题思路
* 2019 KCTF 总决赛 | 第五题《小虎还乡》点评及解题思路
* 2019 KCTF 总决赛 | 第四题《西部乐园》点评及解题思路
【上海第五空间信息科技研究院】(简称:第五空间)是经上海市社会组织管理局批准成立,上海市科协作为业务主管部门的新型研发机构,由翼盾智能科技创始人积聚社会力量发起成立,立足科技事业,支撑国家战略,开展科技研究,推进协同创新。
【杭州安恒信息技术股份有限公司】(简称:安恒信息)成立于2007年,科创板股票代码:688023,一直专注于网络信息安全领域,公司主营业务为网络信息安全产品的研发、生产及销售,并为客户提供专业的网络信息安全服务。公司的产品及服务涉及应用安全、大数据安全、云安全、物联网安全、工业控制安全及工业互联网安全等领域。
2019 KCTF总决赛「最受欢迎奖」评选开始!请各位攻击方选手拿起手中的鼠标或手机,为你喜欢的题目投票啦!
投票对象:2019 KCTF总决赛 防守方赛题
投票方法:点击进入2019 KCTF总决赛网页,在弹出的对话框中,为题目打分:顶/踩/还行。
哪些人可以投票:
只要成功提交过总决赛赛题答案的选手,都可以参与!
投票时间:2019年12月30日~2020年1月6日
⭐「最受欢迎奖」奖品:戴森吸尘器V8 FLUFFY
究竟谁能获得 「最受欢迎奖」 就看你啦!