Trivia 1 Undistorted History
说明
Description
What is the name of this place?
No need to calculate md5 or appending ASIS_
之前没想那么多,根据history和name这两个关键字,再联想到这个比赛是伊朗的,我第一时间想到的是耶路撒冷、波斯、伊朗等关键词,感觉前两个有历史感,后一个很直接。但都不对。
后来发现题目还以地图的形式给出了一遍,这才恍然大悟,这个题目的位置在波斯湾上(研读了一会地图发现的)
于是填波斯湾的英文名字就对了。
Web 75 Hidden flag
说明
(空)
卧槽这题没有说明?逗我吗,什么都没有怎么做?但题目是hidden flag,隐藏的flag,在做其他题的过程中,我们就发现所有题目的数据包都会返回一个X-Flag头:
值是一个flag,但其中有4个字符是问号。之前不知道这个x-flag是啥意思,就没管,现在这题放出来以后,大概就能猜到,这个x-flag可能就是这题的解。
但那4个字符怎么解?
在之前做题的过程中我也观察过这个网站提交flag的方法:现在本地用javascript验证一遍,然后通过ajax发送给服务端验证。
所以我就可以想到,我们可以通过javascript暴力穷举一下这个flag缺失的4个字符。
借用这个网站自己写的javascript代码,我再修改一下,就弄出了一个穷举的脚本:
<script src="sha256.js"></script>
<script>
var str = "0123456789abcdef";
var md5 = ["ASIS_b6b", "244608c2", "c2e869cb56", "67b64", "b1"];
for(var a = 0; a < 16 ; a++){
for (var b = 0; b < 16; b++) {
for (var c = 0; c < 16; c++) {
for (var d = 0; d < 16; d++) {
var en = md5[0] + str[a] + md5[1] + str[b] + md5[2] + str[c] + md5[3] + str[d] + md5[4];
var shaObj = new jsSHA(en, "TEXT");
var hash = shaObj.getHash("SHA-256", "HEX");
var shaObj2 = new jsSHA(hash, "TEXT");
var hash2 = shaObj2.getHash("SHA-256", "HEX");
if (hash2 == "2b127c77074e44b6e74074b1eb8d32dfe27fe78e6a05e302baed68e2cc643ca1") {
document.write(en);
};
};
};
};
};
</script>
其中“2b127c77074e44b6e74074b1eb8d32dfe27fe78e6a05e302baed68e2cc643ca1”是原文经过两次sha256计算以后的结果,在html中可以找到。
我把x-flag按照?分成了5部分,装在一个数组中:["ASIS_b6b", "244608c2", "c2e869cb56", "67b64", "b1"]
然后写了4层嵌套的循环,来穷举4个缺失的字符。一旦找到结果,就用document.write打印在屏幕上。
得到Flag:ASIS_b6be244608c27c2e869cb56167b649b1
@phiti0n le4f ::TEAM L::
Comment Closed.