知识点:全排列
开局就是不停的向下找,例如这边能发现/chase/,那就进入/chase/
由于/chase/跳转的有点快我们可以抓个包看一下,又看到一个/leftt/,然后一步一步下去
直到/fight/
// Run to scramble original flag
//console.log(scramble(flag, action));
function scramble(flag, key) {
for (var i = 0; i < key.length; i++) {
let n = key.charCodeAt(i) % flag.length;
let temp = flag[i];
flag[i] = flag[n];
flag[n] = temp;
}
return flag;
}
function check_action() {
var action = document.getElementById("action").value;
var flag = ["{hey", "_boy", "aaaa", "s_im", "ck!}", "_baa", "aaaa", "pctf"];
// TODO: unscramble function
}
它的意思就是让我们排列一下flag,可以确定的是开头肯定是pctf{hey_boys``末尾是
}`,把所有可能列出来
from itertools import permutations
flag = ["{hey", "_boy", "aaaa", "s_im", "ck!}", "_baa", "aaaa", "pctf"]
item = permutations(flag)
#全排列,列表的方式
for i in item:
k = ''.join(list(i))
#用''连接各个部分
if k.startswith('pctf{hey_boys') and k[-1] == '}':
#startswith('pctf{hey_boys')若开头匹配到则返回true
#当开头是pctf{hey_boys且末尾是},则输出
print(k)