先把附件下载下来,然后打开,mac自动打开方式是浏览器打开
看到一个输入框,怀疑是sql注入,提交内容按按钮没反应
然后检查元素,看到有乱码
然后本人不会了,太菜了,看别人的WP。
附件下载下来用sublime查看,终于看到了别人所说的”正常“的乱码。
eval()改为alert(),用浏览器打开,弹窗显示了JS源代码,用在线网站调整对齐格式
function $() { var e = document.getElementById("c").value; if (e.length == 16) if (e.match(/^be0f23/) != null) if (e.match(/233ac/) != null) if (e.match(/e98aa$/) != null) if (e.match(/c7be9/) != null) { var t = ["fl", "s_a", "i", "e}"]; var n = ["a", "_h0l", "n"]; var r = ["g{", "e", "_0"]; var i = ["it'", "_", "n"]; var s = [t, n, r, i]; for (var o = 0; o < 13; ++o) { document.write(s[o % 4][0]); s[o % 4].splice(0, 1) } } } document.write('<input id="c"><button onclick=$()>Ok</button>');
把e的值输出来就是就获取flag,要满足上面的if,在正则中^表示开头,$表示末尾,同时还要满足长度为16位
那么把上面的值拼接一下e的值就是 be0f233ac7be98aa,把附件的eval()改回,在输入框输入,获取flag
或者直接把中间那段代码直接运行,丢给浏览器的控制台,跑出来就是flag
var t = ["fl", "s_a", "i", "e}"]; var n = ["a", "_h0l", "n"]; var r = ["g{", "e", "_0"]; var i = ["it'", "_", "n"]; var s = [t, n, r, i]; for (var o = 0; o < 13; ++o) { document.write(s[o % 4][0]); s[o % 4].splice(0, 1) }
flag{it's_a_h0le_in_0ne}