關於我逃出胡立的異世界 R30 這件事之攻略包

前言

由於這個系列是紀錄挑戰胡立分享的遊戲 [異世界?r3:0挑戰] 的挑戰紀錄,也不知道該算在哪個分類,所以就乾脆都放在 JavaScript 下囉~

簡易介紹

這是一款由胡立以及他的學生一起開發的一款小品遊戲,叫做 [異世界?r3:0挑戰] 個人已經小玩了一下,是真的非常的棒,也私下問過胡立能不能讓我寫攻略文分享,讚嘆胡立感謝胡立~

如果你喜歡這個遊戲也歡迎分享出去,感謝胡立與他的學生 (Min Wei)

遊戲網址: 異世界?r3:0挑戰

進入遊戲後你會看到基本的介紹

遊戲介紹

簡單來講接下來我們每一關都必須去動腦尋找 token (你可以當作密碼) 藏在哪裡,舉凡 JavaScript、HTML 甚至 CSS 中都有可能唷~

※ 如果你遇到卡關,可以使用 /lvX.php?hint=help 來得到大賢者的提示唷! (X 代表數字,如果是第三關就是 /lv3.php?hint=help)

防雷線

注意此區塊式防雷線,以下都有附上答案與解法,所以建議自己嘗試看看過不了再來看這一篇文章,否則這樣就會失去樂趣哩

第一關

第一關進入遊戲就跟你來個很簡單的開場白

開場白

在第一關它就給你答案了,畢竟要是太難的話…XD

所以廢話不多說,答案就是 r30:start

1
https://r30challenge.herokuapp.com/lv1.php?token=r30:start

第二關

第二關開始你會得到一串看似亂碼的數字

亂碼

但是其實這並不是亂碼,而是所謂的進制,一般來講進制有分二進制、八進制、十進制、十六進制

那麼 100101001001100001110 其實代表的是二進制,你可能會說為什麼?

二進制很簡單可以理解,簡單來講就是當滿二就進位,所以你在這一串數字上並沒有看到任何超過 2 的,故我們可以判定這是二進制

接下來打開進制轉換的網站,我是使用此網站 → http://www.kwuntung.net/hkunit/base/base.php

然後填入數字並由 2 進制轉成 18 進制,那你就可以得到答案哩~

Image

所以答案就是 bad18

1
https://r30challenge.herokuapp.com/lv2.php?token=bad18

第三關

接下來依照畫面提示就是要召喚 console 控制台來找 token 囉~

console

當你打開 console 控制台就可以看到答案了

console

所以答案就是 divsurprise (花括號不算)

1
https://r30challenge.herokuapp.com/lv3.php?token=divsurprise

第四關

第四關開始也是一樣要我們找出瀏覽器中的 token

token

相信你打開立刻就可以看到答案了

答案

所以答案是 commentfaker (一樣花括號不算)

1
https://r30challenge.herokuapp.com/lv4.php?token=commentfaker

第五關

接下來這一關 NPC 超好心直接給你 token

token

所以我們就來輸入 tRaNspar3nT 吧~

1
https://r30challenge.herokuapp.com/lv5.php?token=tRaNspar3nT

不意外你會看到你失敗了 (WT…?)

YOU DIE!

讓我們回頭打開 console 控制台來看原因吧~

console 控制台

看似都沒有問題,但是如果你嘗試點開 <span class="special">{csspersona!}</span> 你會發現裡面竟然還有一層!

竟然欺騙我的感情

原來這一關使用的 CSS 偽元素障眼法來遮住真正的答案…

CSS 替身之術

所以真正的答案是 csspersona!

1
https://r30challenge.herokuapp.com/lv5.php?token=csspersona!

第六關

一進來你絕對滿滿的 WT…????????在看這一篇文章的你可能會說是我騙你

WTF?

但是如果你眼睛快一點應該會發現原因,那就是我們進入第六關之前被強制跳轉啦~~

這一點我們可以從 Url 觀察出來,而且在進入關卡的時候其實會閃一下,那到底該怎麼做才能取得 token 呢?

方法很簡單那就是在進入關卡之前快速按一下 ESC!

快速 ESC

此時你就會看到答案是 windowhack

1
https://r30challenge.herokuapp.com/lv6.php?token=windowhack

第七關

接下來這一關你看到提示訊息可能會覺得 WT…?要我從茫茫大海的 window 去找 token 嗎?

茫茫大海

沒關係,我們試著打開 console 控制台,並輸入 window

window

接下來讓我們從大海裡面找吧~

window 大海

所幸一打開就看到疑似答案的 token

疑似 token

所以這一關答案是 emojicute

1
https://r30challenge.herokuapp.com/lv7.php?token=emojicute

第八關

接下來這一關要我們去翻 cookie

cookie

所以我們打開 console 控制台看看 cookie,然後切換到儲存空間,這時候就可以看到 cookie 的值

cookie 的值

但是這邊有一個重點要注意,答案看似是 %7Bcookieyumyum%7D,但其實是有問題的

首先讓我們打開 URL 編碼表,%7B、%7D 各代表著花括號

花括號

所以真正的答案是 cookieyumyum

1
https://r30challenge.herokuapp.com/lv8.php?token=cookieyumyum

第九觀

接下來考驗的是我們對瀏覽器 response 的熟悉度

response

那麼我們一樣打開 console 控制台來找看看 response

response

通常這種東西極有可能藏在 document 裡面,所以我們就來看看 document 的 response 訊息吧~

document

果然 token 是藏在這裡,所以答案是 headshot

1
https://r30challenge.herokuapp.com/lv9.php?token=headshot

第十關

接下來這一關是比較困難的,我自己大概就卡了 3 小時…

首先提示訊息說在 HTML 中有一段 PHP 程式碼

PHP 程式碼

打開 console 控制台就可以看到 PHP 程式碼

console

那麼我們就將這一段程式碼複製下來貼到線上 PHP 編譯器也可以

(我是使用此編譯器 PHP Sandbox)

將剛剛取得的程式碼貼近線上編譯器中

1
2
3
4
5
6
7
8
9
function isTokenValid($token) {
if (strlen($token) !== 8) return false;
for($i = 1; $i <= 7; $i+=2) {
if ((ord($token[$i]) * ord($token[$i - 1])) % $i !== 0) {
return false;
}
}
return true;
}

從程式邏輯第一行 if (strlen($token) !== 8) return false; 來看這一個答案至少字串長度是 8,所以我們至少要找到 8 的長度

這邊老實講卡了超久,只好召喚大賢者給我提示

跪求大賢者提示

我看到公倍數的時候 WT…公倍數還要長度是 8 的…說真的公倍數的計算方式我完全不記得,所以 G 了一下

首先公倍數是什麼,在講公倍數之前必須先了解倍數、公倍數、最小公倍數,否則絕對抓不出來

3 的倍數有 3、6、9,12、15、18、21、24、27、30…

4 的倍數有 4、8、12、16、20、24、28、32、36…

公倍數就是數字中共同的倍數,就是公倍數

那最小公倍數就是取公倍數中最小值
所以 3 與 5 的最小公倍數是 12

如果換作是 [2, 5] 的公倍數呢?那麼最小公倍數就是 10,WHY? 讓我們列出倍數表

2 的倍數 2、4、6、8、10、12、14、16、18、20…
5 的倍數 5、10、15、20、25、30、35、40、45、50…

接下來稍微分析一下這一些 PHP 程式碼,首先 strlen() 是用來計算字串長,所以傳入的答案極有可能是字串,那 ord() 則是將字串轉回 ASCII 碼

所以我們就可以試著使用這個觀念(瞬間惡補數學)來找尋答案

但是…

這題就留給你自己去想吧 :D

因為我也還沒破關呢~~~~~~

但是聽胡立透漏答案並沒有唯一,只要傳入合理的答案都是正確的唷 ~

可以給點牡蠣。
Google AD