3rwgk-6aaaa-aaaad-qey6a-cai.icp0.io Open in urlscan Pro
2a00:fb01:400:200:5000:61ff:fe45:43ab  Public Scan

URL: https://3rwgk-6aaaa-aaaad-qey6a-cai.icp0.io/ssctf-network-security-competition-hungry-game.html
Submission: On January 16 via api from US — Scanned from CH

Form analysis 1 forms found in the DOM

Name: searchform

<form name="searchform" class="form u-search-form">
  <i class="icon fas fa-search fa-fw"></i>
  <input type="text" class="input u-search-input" placeholder="Search...">
</form>

Text Content

SSCTF网络安全比赛——HungryGame

 * 
 * 

 * 首页
 * 分类
   * 学习园地
     * 编程开发
     * 算法之美
     * 逆向工程
     * CTF比赛
   * 娱乐天地
     * 奇思妙想
     * 挑战智慧
     * 魔术学堂
   * 其它分类
     * 博客折腾
     * 故事小说
     * 过期代码
 * 友链
 * 留言
 * 关于


 * 
 * * 首页
   * 分类
     * 学习园地
       * 编程开发
       * 算法之美
       * 逆向工程
       * CTF比赛
     * 娱乐天地
       * 奇思妙想
       * 挑战智慧
       * 魔术学堂
     * 其它分类
       * 博客折腾
       * 故事小说
       * 过期代码
   * 友链
   * 留言
   * 关于

Volantis





SSCTF网络安全比赛——HUNGRYGAME

才怪

学习园地CTF比赛

发布于:2016年2月29日

次浏览



第一关

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


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

看一下游戏提示:

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

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

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


第二关

地图里有两扇门:


关卡提示:

> 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


COPY

function onnextdoor() {
	data = JSON.stringify([msg('next', {})]);
	ws.send(data);
}

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


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

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


第三关

地图里有两颗树:


游戏提示:

> 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


COPY

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


COPY

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


执行后游戏提示:

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

走到门边通往下一关。


第四关

地图里有两堆钻石:


游戏提示:

> 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


COPY

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


COPY

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


COPY

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了:


游戏提示:

> 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


COPY

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


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

1
2
3
4
5
6
7
8
9
10
11


COPY

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


COPY

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}

> 博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
> 
> 本文永久链接是:https://www.poboke.com/ssctf-network-security-competition-hungry-game.html

更新于:2021年8月15日

CTF

JavaScript

微信自动摇一摇刷一分钱

除夕打开微信摇一摇抢红包,红包雨还没开始时,会显示如下界面: 底部圆形的logo在不停地跳动,点击一下,居然领到了一分钱:
如果不断摇一摇再点击logo,就可以领到很多一分钱。不过手动操作太麻烦...

破解Mac版WiFi万能钥匙密码

春节回家,家里没有网络,手机流量又不够用,所以只能去蹭邻居的网。 我的电脑里以前装过WiFi万能钥匙,打开一看,发现有可以连接的热点:
先用手机开启一个热点给电脑使用,再打开Charles拦截电...

评论

昵称
邮箱
网址(可选)

预览:


0  字
提交

评论

刷新
Powered by Waline v1.6.0


才怪

网络中的魔术师


文章分类
 * 学习园地
   (36)
 * 编程开发
   (8)
 * 算法之美
   (9)
 * 逆向工程
   (9)
 * CTF比赛
   (10)
 * 娱乐天地
   (22)
 * 奇思妙想
   (4)
 * 挑战智慧
   (9)
 * 魔术学堂
   (9)
 * 其它分类
   (10)
 * 博客折腾
   (4)
 * 故事小说
   (2)
 * 过期代码
   (4)

本文目录
 1. 第一关
 2. 第二关
 3. 第三关
 4. 第四关
 5. 第五关





PoweredHexo
ThemedVolantis
AnalysedClarity

Copyright © 2012-2021 破博客