主要参考链接:https://lim1ts.github.io/ctf/2017/10/19/hackluTriangles.html
其他参考链接:https://wu.rot26.team/CTF/Hacklu/2017/web/triangle/
https://www.vhn.vn/blog/index.php/2017/10/19/hack-lu-2017/
过程:test_pw(enc_pw(userInput), get_pw())
get_pw()返回值固定主要逆向test_pw( , )和enc_pw(userInput)得到正确的userinput
输入框函数:
Secret.js
观察get_pw()函数发现返回固定值,控制台输出
"XYzaSAAX_PBssisodjsal_sSUVWZYYYb"
观察enc_pw()函数发现写入内存指令在于_[o2[a]],与用户输入无关,需要还原写入的内存指令,了解字符串处理过程以期逆向出正确输入的字符串
为了直接在控制台以16进制的形式输出写入内存的信息,模仿enc_pw()函数构造getARM1()函数、和将10进制转换为16进制的函数toHexString()
function getARM1(){
var x = stoh(atob(getBase64Image("frei")));
var output = new Array();
for(var i = 0; i < o2.length ; i++){
output[i] = x[o2[i]];
}
return output;
}