CTF-攻防世界-Web-新12-simple_js

题目描述:

  小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )

考察内容:

  考察JS的用法

 1 function dechiffre(pass_enc) {
 2     var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65"; // FAUX PASSWORD HAHA
 3     var tab = pass_enc.split(',');  // 55,56,54,79,115,69,114,116,107,49,50
 4     var tab2 = pass.split(',');
 5     var i, j, k, l = 0, m, n, o, p = "";
 6     i = 0;
 7     j = tab.length; // 11
 8     k = j + (l) + (n = 0);
 9     n = tab2.length; // 18
10     for (i = (o = 0); i < (k = j = n); i++) {
11         o = tab[i - l];
12         p += String.fromCharCode((o = tab2[i]));
13         if (i == 5) break;
14     }
15     for (i = (o = 0); i < (k = j = n); i++) {
16         o = tab[i - l];
17         if (i > 5 && i < k - 1)
18             p += String.fromCharCode((o = tab2[i]));
19     }
20     p += String.fromCharCode(tab2[17]);
21     pass = p;
22     return pass;
23 }
24 // 55,56,54,79,115,69,114,116,107,49,50 // ASCII: 786OsErtk12
25 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"));
26 
27 h = window.prompt('Enter password');
28 alert(dechiffre(h));

 分析:

  分析函数dechiffre可知,dechiffre的返回值与函数的参数没有任何关系

  排除函数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"

  将此字符串转换成ASCII后,尝试拼凑flag(Cyberpeace{xxxxxxxxx}),看看效果

十六进制转换成字符串

    \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为十六进制表示形式

    使用python的print函数或者在线https://www.bejson.com/convert/ox2str/将十六进制转换为10进制

    十进制:55,56,54,79,115,69,114,116,107,49,50

    再次将十进制转换成ASCII:786OsErtk12

拼凑flag:

  Cyberpeace{786OsErtk12}  

posted @ 2021-02-25 21:39    阅读(393)  评论(0)    收藏  举报