抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

第一关

这道题的题目是《饥饿游戏》,一进游戏果然是好莱坞大片的即视感:
This is a picture without description

可以看到场面非常宏伟壮观,而我们的英雄人物就是乔布斯

看一下游戏提示:

Connected
Login OK
Use [↑↓←→] ot move around, [space] is the function key.

也就是说:方向键可以移动英雄,空格键是用来触发功能的。

把英雄移动到门的旁边,按空格键可以过关。

第二关

地图里有两扇门:
This is a picture without description

关卡提示:

There is a locked door in front of you, but you don’t have the key.

走到左边的门旁边按空格键,看到提示:

Find key to open this door!

看来需要钥匙才能打开左边的门,但是地图里没看到有钥匙。

在网页源码里搜索关键字Find key,可以在game.js文件里发现以下代码:

1
2
3
4
5
6
7
8
function onnextdoor() {
data = JSON.stringify([msg('next', {})]);
ws.send(data);
}

function onfackdoor() {
logtext('Find key to open this door!');
}

搜一下onfackdoor()函数,发现按空格就直接调用了,所以是找不到钥匙来开启的。
onnextdoor()函数的作用是向服务器发送数据进入下一关,所以在浏览器的控制台里执行onnextdoor()即可过关。

还有一种方法是修改英雄的坐标,这样英雄就可以穿墙了,然后走到右边的门按空格键。

第三关

地图里有两颗树:
This is a picture without description

游戏提示:

Hold [space] to cut the tree. When you get 9999 wood, a wooden pickaxe will be automatically generated.

在树的旁边按住空格键可以砍树,获得9999块木材会自动获取一根木制镐。

走到树边砍树:

Cutting Tree…
You get 3 woods,total 3
You get 5 woods,total 8
……

按住一秒会得到一个木材,手动砍树的话肯定是行不通的,看一下js文件,发现如下代码:

1
2
3
4
5
6
7
8
9
10
11
if (level == 2 && users[heroname].x < 800) {
var tmp = Date.parse(new Date()) - woodstart
if (tmp > 1000 && woodstart != -1) {
woodstart = -1;
data = JSON.stringify([msg('wood', {
'time': tmp
})]);
ws.send(data);
}
}

tmp变量是两次按键之间的毫秒数,所以可以轻易伪造砍了10000颗树,在浏览器控制台输入:

1
2
3
4
data = JSON.stringify([msg('wood', {
'time': 10000000
})]);
ws.send(data);

执行后游戏提示:

You get 10000 woods,total 10008
Get the wooden pickaxe!!!

走到门边通往下一关。

第四关

地图里有两堆钻石:
This is a picture without description

游戏提示:

Mine by hitting [space], When you get 9999 diamonds,the diamond sword will be automatically generated.

猛击空格键,得到9999颗钻石会获得一把钻石剑。

在游戏源码里可以发现以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (level == 3 && users[heroname].x < 800) {
if (second != Date.parse(new Date()) && diamondpos) {
if (diamondtimes > 0) {
data = JSON.stringify([msg('diamond', {
'count': diamondtimes
})]);
ws.send(data);
}
diamondtimes = 0;
diamondpos = false;
second = Date.parse(new Date());
} else {
diamondtimes += 1;
}
}

按照第三关的方法在浏览器控制台执行:

1
2
3
4
data = JSON.stringify([msg('diamond', {
'count': 10000
})]);
ws.send(data);

游戏提示:

Mining too fast, manager kicked you out.
Connection lost

挖掘太快,被服务器踢出去了。

应该是数量太多了,经过试验,每次挖掘的最大数量是50,所以用循环执行200次就行了:

1
2
3
4
5
6
for (var i = 0; i <= 200; i++) {
data = JSON.stringify([msg('diamond', {
'count': 50
})]);
ws.send(data);
}

执行结果:

Get 50 diamond,total 50
Get 50 diamond,total 100
Get 50 diamond,total 150
……
Get 50 diamond,total 9950
Get 50 diamond,total 10000
Get the diamond sword!!!

通过门可以通向下一关。

第五关

终于要打BOSS了:
This is a picture without description

游戏提示:

At last, the final level! Wave your diamond sword and beat the BOSS.
PS: Short-range weapons can only hurt other players(your hp +1) but cannot harm the BOSS.
PS: Cause 15 point damages to the BOSS to get the flag
PS: Or kill 5 players to get the flag

近距离攻击的武器只能攻击到别的玩家,打不到远处的BOSS。攻击到别的玩家时,别的玩家的hp会减1,自己的hp会加1。
有两种过关方法,一是让BOSS掉15滴血,二是杀死5个玩家。

BOSS是有瞬移技能的,满地图顺机传送,而且隔两三秒就攻击玩家一次:

Attacked by boss
Attacked by boss
Attacked by TFBoys
Attacked by boss

英雄不但会受到BOSS攻击,还会受到其它玩家的攻击,而英雄只有10滴血,往往坚持30多秒就挂了。

地图里有个神秘的箱子和一把远程攻击的弓箭,其实这些都是骗人的,捡物品的时候会调用以下代码:

1
2
3
function onselfkill(argument) {
logtext("There's nothing here.Too yong too simple.( ‵▽′)ψ ");
}

看一下按功能键时的代码:

1
2
3
4
5
6
7
8
9
10
11
if (level == 4) {
if (second != Date.parse(new Date())) {
data = JSON.stringify([msg('attack', {
'x': users[heroname].x,
'y': users[heroname].y
})]);
ws.send(data);
attacking = true;
second = Date.parse(new Date());
}
}

代码向服务器发送了一个攻击事件和英雄的当前坐标,服务器应该是判断这个坐标周围有没有攻击对象的。如果把这个坐标改成BOSS的坐标的话,那么就可以攻击到BOSS了。

查看js代码,发现有一个boss变量,所以可以在控制台执行以下代码:

1
2
3
4
5
6
7
8
function attact() {
data = JSON.stringify([msg('attack', {
'x': boss.x,
'y': boss.y
})]);
ws.send(data);
}
setInterval('attact()', 1000);

执行后可以得到过关的key:

Attack:boss,total 1
Attack:boss,total 2
Attacked by boss
Attack:boss,total 3
Attack:boss,total 4
Attack:boss,total 5
Attacked by boss
Attack:boss,total 6
Attack:boss,total 7
Attacked by boss
Attack:boss,total 8
Attack:boss,total 9
Attack:boss,total 10
Attacked by boss
Attack:boss,total 11
Attack:boss,total 12
Attack:boss,total 13
Attacked by boss
Attack:boss,total 14
Attack:boss,total 15
SSCTF{2b3d41dd4b7911dc0fe683d1a0d977ef}

评论