Try   HackMD

r3:0 異世界網站挑戰 破關筆記(中)


上集在此 : r3:0 異世界網站挑戰 破關筆記(上)
下集在此 : r3:0 異世界網站挑戰 破關筆記(下)

一樣是一邊防疫一邊複習一邊玩的 Huli 大與助教 minw 設計的 異世界網站挑戰遊戲 ,以下就是第六到第十關的破關筆記 :

第 6 關


Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

打開 Devtool 的 Sources,在 lv6.js 裡往下拉,看到了一個充滿顏文字的長長字串。詢問了 Google 大神,看到了 Huli 大的文章 :
讓 JavaSript 難以閱讀:jsfuck 與 aaencode

看來,這個顏文字的編碼應該是所謂的 aaencode。

再度拜請 Google 大神,發現了以下訊息 :

AAencode解密,去掉最后一行末尾的('_'),再将所需解密内容复制到浏览器开发者工具(F12)的 Console,按回车即可解密

原來是要去掉最後的('_')啊,拿去 google.com 裡打開 F12,放進 console

{ window.__IamToken = "emojicute" }

前往下一關 :
https://r30challenge.herokuapp.com/lv7.php?token=emojicute



第 7 關


Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

包包深處的餅乾,那就去撈 cookie 吧! Application 裡面,cookie 的 name 就是 TokenIsMe 了,拿出裡面的 value %7Bcookieyumyum%7D

前往下一關 :
https://r30challenge.herokuapp.com/lv8.php?token=cookieyumyum



第 8 關


Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

大概是聯想遊戲,頭 = head,加上 response,就是在講 response header 無誤吧。
打開 Network 找到 Headers 裡的 Response Header :

Tokenisme: {headshot}

Got you!

前往下一關 :
https://r30challenge.herokuapp.com/lv9.php?token=headshot



第 9 關


這關不用猜,很明白的告訴了位置,找出 php 程式碼。


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;
}
        
  1. token 是一個長度為 8 的字串
  2. 按順序每兩個字一組,兩個 ASCII 編碼後的數字相乘後必須要整除 $i,即為 $i 的倍數
  3. 按順序 $i 為 1、3、5、7

我自己偷吃步的想法是,我將每兩個一組的字都設定成一樣的,分別都是對應數字的倍數,接著打開 ASCII & EASCII碼表,token 字串第 1 & 2 個字轉成數字必須是 1 的倍數,選一個自己喜歡的就行;第 3 & 4 個字必須是 3 的倍數,以此類推。
只要符合程式碼規則,沒有唯一解。

前往下一關 :
https://r30challenge.herokuapp.com/lv10.php?token=AA!!22MM



第 10 關


m3nt0r: 恭喜你得到武器,接下來的挑戰會更加艱難,只靠 devtool man 的稱號可能是撐不過去的

看到畫面上的這句話,就知道接下來不是靠只打開 Devtool 可以解決的了。

進到 Network,發現了以下訊息:

既然是 CORS error,那就暴力 (?) 的用 node.js 來突破同源政策吧!

const request = require('request')

request.post(
  'https://r30-api.herokuapp.com/api.php',
  (err, res, body) => {
    console.log(body)
  })

就可以得到 {"token":["sosdan"]} 了。

前往下一關 :
https://r30challenge.herokuapp.com/lv11.php?token=sosdan



如果想繼續往下或是回上集,請參考以下:
上集在此 : r3:0 異世界網站挑戰 破關筆記(上)
下集在此 : r3:0 異世界網站挑戰 破關筆記(下)