攻防世界 Crypto flag_in_your_hand1
- 1.题目下载地址
- 2.分析题目
1.题目下载地址
点击下载
2.分析题目
- 题目是一个HTML文件和一个js文件
- 打开网页,查看源码,可以发现要让ic的值为true,才能拿到flag
<script type="text/javascript">
var ic = false;
var fg = "";
function getFlag() {
var token = document.getElementById("secToken").value;
ic = checkToken(token);
fg = bm(token);
showFlag()
}
function showFlag() {
var t = document.getElementById("flagTitle");
var f = document.getElementById("flag");
t.innerText = !!ic ? "You got the flag below!!" : "Wrong!";
t.className = !!ic ? "rightflag" : "wrongflag";
f.innerText = fg;
}
</script>
- 查看js文件,发现只有第二个if语句条件不成立的时候,ic的值才能为true
function ck(s) {
try {
ic
} catch (e) {
return;
}
var a = [118, 104, 102, 120, 117, 108, 119, 124, 48,123,101,120];
if (s.length == a.length) {
for (i = 0; i < s.length; i++) {
if (a[i] - s.charCodeAt(i) != 3)
return ic = false;
}
return ic = true;
}
return ic = false;
}
- 满足这个函数的条件的输入串s,就是token
- a数组的每一个元素减去3,再转换成对应的字符,就可以得到token的值:security-xbu
填入token的值,就能得到flag了