一、攻防世界 web 新手题
1。第十二题:考察JS代码审计
2.解题报告:
这个dechiffre()函数不管输入什么结果都是一样的,也就是说这是个干扰项,那密码还能在哪呢?下面一串16进制编码。
<script type="text/javascript">
function dechiffre(pass_enc){
var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
var tab = pass_enc.split(',');
var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;
k = j + (l) + (n=0);
n = tab2.length;
for(i = (o=0); i < (k = j = n); i++ ){o = tab[i-l];p += String.fromCharCode((o = tab2[i]));
if(i == 5)break;}
for(i = (o=0); i < (k = j = n); i++ ){
o = tab[i-l];
if(i > 5 && i < k-1)
p += String.fromCharCode((o = tab2[i]));
}
p += String.fromCharCode(tab2[17]);
pass = p;return pass;
}
String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));
h = window.prompt('Enter password');
alert( dechiffre(h) );
3.String里面是个16进制把他转一下字符串处理 会得到一个数组
s="\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"
print (s)
[55,56,54,79,115,69,114,116,107,49,50]
4.把数字进行处理下
a = [55,56,54,79,115,69,114,116,107,49,50]
c = ""
for i in a:
b = chr(i)
c = c + b
print(c)
{786OsErtk12}
5falg规范flag格式,可得到Cyberpeace{786OsErtk12}
转载于 xctf 新手 web 题 12