欢迎来到小马岛(Pwnie Island)!
Pwn Adventure 3: 小马岛 是一款限量发行的第一人称真正开放世界 MMORPG,背景设定在一个美丽的岛屿上,那里什么事都可能发生。这是因为这款游戏故意存在各种漏洞,可以让你进行各种搞怪的黑客操作!飞行、无限金币等等,只需修改客户端或设置网络代理即可实现。你准备好迎接混乱了吗?!
本设置是视频系列的一部分,该系列涵盖了这款游戏中的各种黑客技术和挑战。
除去开头的休闲 Let's Play,整个系列在不到4小时内涵盖了 Pwn Adventure 3 的所有挑战。
来自官方 README:
至少 2GB 内存,更多内存允许单台机器运行更多实例
游戏服务器不需要任何图形硬件,纯控制台运行。已知在 Amazon AWS 和 Digital Ocean VPS 实例上运行良好。
游戏服务器需要大量内存才能运行,但利用 fork 和写时复制内存技术,单个主机上可以运行多个实例。
对于 2GB 内存的服务器,不建议运行超过 5 个实例;但 8GB 内存的服务器通常可以运行 CPU 能处理的所有实例。
如果内存充足,建议每个 CPU 核心运行 2-3 个实例。每个核心最多可以运行 4-5 个实例,但这可能会引入轻微延迟。
客户端和服务器的文件也超过 2GB,因此需要几 GB 的可用磁盘空间。
构建和部署自己的服务器有几种方法。
一种方法是下载官方文件并按照 README 中的说明操作。下载链接可在官方网站找到:http://www.pwnadventure.com/#server。
@Beaujeant 创建了一份详细且易于遵循的逐步指南。它也是构建选项 3 的 Docker 镜像的基础。指南地址:https://github.com/beaujeant/PwnAdventure3/blob/master/INSTALL-server.md。
这个选项非常简单,只要主机上安装了 docker 和 docker-compose 即可。它使得运行和拆卸服务器变得很容易,而无需对主机系统进行实际更改。
首先,收集所有必需的文件:
git clone https://github.com/LiveOverflow/PwnAdventure3.git
cd PwnAdventure3
wget http://pwnadventure.com/pwn3.tar.gz
tar -xvf pwn3.tar.gz
要运行服务器,必须安装 docker 和 docker-compose。Docker 发展迅速,因此最好按照当前的官方步骤进行安装(这可能包括删除旧版本的系统 Docker):
docker-compose:https://docs.docker.com/compose/install/docker 组:sudo usermod -a -G docker $USER。重启或重新登录,并用 id 验证用户是否在 docker 组中。然后只需构建镜像并启动主服务器和游戏服务器:
docker-compose build
docker-compose up
docker-compose up 也可以在后台以分离模式运行,加上 -d。
首先从官方网站下载客户端:http://www.pwnadventure.com/#downloads
要让客户端连接到新服务器,需要修改客户端的 server.ini 文件。使用 Docker 启动的服务器期望使用主机名 master.pwn3 和 game.pwn3(理论上可以在 docker/设置文件中更改这些名称)。
客户端的 server.ini 应类似如下内容:
[MasterServer]
Hostname=master.pwn3
Port=3333
[GameServer]
Hostname=game.pwn3
Port=3000
Username=
Password=
Instances=
确保客户端可以访问这些主机,例如将它们添加到 /etc/hosts 文件中。在此示例中,服务器运行在 192.168.178.57,对应的条目为:
192.168.178.57 master.pwn3
192.168.178.57 game.pwn3
警告: 在 server.ini 中使用 IP 作为 Hostname 是行不通的!我花了 2 小时才找出问题所在。
要停止服务器,只需输入 docker-compose down。
警告: 数据库文件不是持久化的——关闭容器会重置所有内容。所以请先备份。
$ docker-compose build
Building init
ERROR: Error processing tar file(exit status 1): write /client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Content/Paks/Characters.pak: no space left on device
答:获取更多磁盘空间。
$ docker-compose build
Building init
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
答:你的用户可能不在 docker 组中,或者 docker 服务未运行。执行 sudo usermod -a -G docker pwn3,然后用 id 验证。或者执行 service docker restart。
检查压缩包是否损坏
$ md5sum pwn3.tar.gz
d3f296461fa57996018ce0e4e5a653ee pwn3.tar.gz
$ sha1sum pwn3.tar.gz
022bd5174286fd78cd113bc6da6d37ae9af1ae8e pwn3.tar.gz
连接错误:无法连接到主服务器
这可能意味着 MasterServer 不可达。
server.ini 中的 [MasterServer] 条目master.pwn3 吗?/etc/hosts 文件中的 IP 地址是否正确?3333?sudo netstat -tulpn 检查
tcp6 0 0 :::3333 :::* LISTEN 31913/docker-proxydocker ps 看两个容器是否启动
880f93374070 pwn3server "/opt/pwn3/setup/mas…" 0.0.0.0:3333->3333/tcp, 5432/tcp pwnadventure3_master_1等待连接队列...
这意味着 MasterServer 是可达的,正在等待一个可用的 GameServer 分配给客户端。这可能意味着没有 GameServer 在运行,或者 GameServer 无法连接到 MasterServer。
3000-3005?sudo netstat -tulpn 检查监听进程tcp6 0 0 :::3000 :::* LISTEN 32160/docker-proxypwnadventure3_game_1 容器是否在运行?使用 docker ps -a 检查
84343f81034f pwn3server "/opt/pwn3/setup/gam…" 0.0.0.0:3000-3010->3000-3010/tcp, 5432/tcp pwnadventure3_game_1docker-compose up 的日志中看到以下行了吗:line 1: 7 Killed ./PwnAdventure3Server; pwnadventure3_game_1 exited with code 137
测试时主机使用的版本:
$ uname -a
Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ docker-compose version
docker-compose version 1.19.0, build 9e633ef
docker-py version: 2.7.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
$ docker --version
Docker version 17.12.1-ce, build 7390fc6
真正的英雄是那些制作了这款游戏的人 <3
Pwn Adventure 3 是 Rusty Wagner 的创意。他负责构思、规划以及几乎所有执行工作(编程、关卡设计、任务等等)。没有他,就不会有这款游戏!特别感谢 Ghost in the Shellcode 组织者在开发和测试期间提供的支持。
作者:Vector35 - https://vector35.com/(流行反汇编器 Binary Ninja 背后的公司)