--- tags: 程式導師計劃, 異世界網站挑戰, Huli, Minw --- # r3:0 異世界網站挑戰 破關筆記(中) {%hackmd BJrTq20hE %} <br> 上集在此 : [r3:0 異世界網站挑戰 破關筆記(上)](https://hackmd.io/@dingdingdingliu/SkJs4Zsid) 下集在此 : [r3:0 異世界網站挑戰 破關筆記(下)](https://hackmd.io/@dingdingdingliu/ryEzAmjju) <br> 一樣是一邊防疫一邊複習一邊玩的 Huli 大與助教 minw 設計的 [異世界網站挑戰遊戲](https://r30challenge.herokuapp.com/) ,以下就是第六到第十關的破關筆記 : <br> ## 第 6 關 <br> ![](https://i.imgur.com/cX0ntpV.png) 打開 Devtool 的 Sources,在 lv6.js 裡往下拉,看到了一個充滿顏文字的長長字串。詢問了 Google 大神,看到了 Huli 大的文章 : [讓 JavaSript 難以閱讀:jsfuck 與 aaencode](https://blog.techbridge.cc/2016/07/16/javascript-jsfuck-and-aaencode/) 看來,這個顏文字的編碼應該是所謂的 aaencode。 再度拜請 Google 大神,發現了以下訊息 : > ***AAencode解密,去掉最后一行末尾的('_'),再将所需解密内容复制到浏览器开发者工具(F12)的 Console,按回车即可解密*** 原來是要去掉最後的('_')啊,拿去 google.com 裡打開 F12,放進 console... ``` { window.__IamToken = "emojicute" } ``` <br> > **前往下一關 : <br>https://r30challenge.herokuapp.com/lv7.php?token=emojicute** <br> <br> ## 第 7 關 <br> ![](https://i.imgur.com/C8uBKDs.png) 包包深處的餅乾,那就去撈 cookie 吧! Application 裡面,cookie 的 name 就是 `TokenIsMe` 了,拿出裡面的 value `%7Bcookieyumyum%7D`。 > **前往下一關 : https://r30challenge.herokuapp.com/lv8.php?token=cookieyumyum** <br> <br> ## 第 8 關 <br> ![](https://i.imgur.com/QJa4kN3.png) 大概是聯想遊戲,頭 = head,加上 response,就是在講 response header 無誤吧。 打開 Network 找到 Headers 裡的 Response Header : ``` Tokenisme: {headshot} ``` Got you! > **前往下一關 : https://r30challenge.herokuapp.com/lv9.php?token=headshot** <br> <br> ## 第 9 關 <br> ![](https://i.imgur.com/6R9WbCf.png) 這關不用猜,很明白的告訴了位置,找出 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碼表](http://notepad.yehyeh.net/Content/Program/ASCII.php),token 字串第 1 & 2 個字轉成數字必須是 1 的倍數,選一個自己喜歡的就行;第 3 & 4 個字必須是 3 的倍數,以此類推。 只要符合程式碼規則,沒有唯一解。 > **前往下一關 : [https://r30challenge.herokuapp.com/lv10.php?token=AA!!22MM](https://r30challenge.herokuapp.com/lv10.php?token=AA!!22MM)** <br> <br> ## 第 10 關 <br> > ***m3nt0r: 恭喜你得到武器,接下來的挑戰會更加艱難,只靠 devtool man 的稱號可能是撐不過去的*** 看到畫面上的這句話,就知道接下來不是靠只打開 Devtool 可以解決的了。 ![](https://i.imgur.com/cI8mrOx.png) 進到 Network,發現了以下訊息: ![](https://i.imgur.com/zQSYpvF.png) 既然是 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** <br> <br> 如果想繼續往下或是回上集,請參考以下: 上集在此 : [r3:0 異世界網站挑戰 破關筆記(上)](https://hackmd.io/@dingdingdingliu/SkJs4Zsid) 下集在此 : [r3:0 異世界網站挑戰 破關筆記(下)](https://hackmd.io/@dingdingdingliu/ryEzAmjju)