[b01lers2020]Welcome to Earth-1

1、打開之後介面如下,查看源程式碼資訊,發現chase文件,結果如下:

2、訪問chase文件會一直跳轉到die介面,那就只能抓包進行查看,發現leftt文件,結果如下:

3、訪問leftt文件並查看源程式碼資訊,發現shoot文件,結果如下:

4、訪問shoot文件並查看源程式碼資訊,發現door文件,結果如下:

5、訪問door文件並查看源程式碼資訊,發現check_door()函數和door.js文件,結果如下:

door.js文件內容如下:

6、在door.js文件中發現了open文件,訪問open文件並查看源程式碼資訊,發現open_sesame.js文件,結果如下:

open_sesame.js文件內容如下:

7、在open_sesame.js文件中發現fight文件,訪問fight文件並查看源程式碼資訊,發現fight.js文件,結果如下:

fight.js文件資訊內容如下:

8、到這裡就沒有思路了,原以為是執行scramble函數獲取flag值,但是執行了之後並未成功獲取到flag值,那就只能手動的進行排列組合了,簡單的分析下{hey肯定在第二個位置,ck!}肯定在最後一個位置,pctf應在實在第一個位置的,那就剩_boy、aaaa、s_im、_baa、aaaa五個進行排列組合,5*4*3*2*1=120中,也是無語了,這麼多那肯定不是讓手動組合的,然後就在網上查找了下發現都是採用這個程式碼來實現的,最終成功獲取到flag值,程式碼資訊如下:

from itertools import permutations
import re

flag = ["{hey", "_boy", "aaaa", "s_im", "ck!}", "_baa", "aaaa", "pctf"]
# 對flag字典里的內容進行排列組合
item = permutations(flag)
# 遍歷
for a in item:
    k = ''.join(list(a))
    # 匹配
    if re.search('^pctf\{hey_boys[a-zA-z_]+ck!\}$', k):
        print(k)

可執行的scramble函數(但是未執行出來正確flag),程式碼如下:

var flag = ["{hey", "_boy", "aaaa", "s_im", "ck!}", "_baa", "aaaa", "pctf"];
var key = "Earth";//自己隨便寫的
function scramble(flag,key) {
  for (var i = 0; i < key.length; i++) {
    let n = key.charCodeAt(i) % 8;
    let temp = flag[i];
    flag[i] = flag[n];
    flag[n] = temp;
  }
  return flag;
}
console.log(scramble(flag,key));
document.write(scramble(flag,key));

結果如下: