JavaScript 题目破解过程与解析

时间:2023-03-09 09:36:46
JavaScript 题目破解过程与解析

题目来源 https://www.hackthissite.org/missions/javascript/

HackThisSite JavaScript mission 1-7

1

JavaScript 题目破解过程与解析

我先尝试输入 123456 .当然失败了

搜索按钮的文字:

JavaScript 题目破解过程与解析

找到代码,发现有一个名为check的函数。:

JavaScript 题目破解过程与解析

再次搜索:

JavaScript 题目破解过程与解析

答案明显: cookies

JavaScript 题目破解过程与解析

2

点进去,直接fail。:

JavaScript 题目破解过程与解析

发现

https://www.hackthissite.org/missions/javascript/2/

直接跳转到了

https://www.hackthissite.org/missions/javascript/2/fail.php

我在未跳转时按下了ESC键,然后在前面的源代码发现这个:

JavaScript 题目破解过程与解析

结合提示,和代码,尝试禁用javascript

JavaScript 题目破解过程与解析

再点进去:

JavaScript 题目破解过程与解析
JavaScript 题目破解过程与解析

3

出现了这个东西。

JavaScript 题目破解过程与解析

var foo = 5 + 6 * 7

var bar = foo % 8

var moo = bar * 2

var rar = moo / 3

function check(x)

{

if (x.length == moo)

{

alert("win!");

window.location += "?lvl_password="+x;

} else {

alert("fail D:");

}

}

先正面解一下:

foo == 47

bar == 7

moo == 14

rar == 4.666667

我就输入14个字母

看来是过了?:

JavaScript 题目破解过程与解析

4

第四mission,又是密码。

JavaScript 题目破解过程与解析

当然,一开始猜测,报错误。

同上某题方法,搜索password于源代码。发现:

<button onclick="javascript:check(document.getElementById('pass').value)">Check Password</button>

同样把input框的文字传递给check函数。JavaScript 题目破解过程与解析

这是什么玩意儿?

输入hack_this_site,错误。

仔细研究代码:这好像是个坑。RawrRawr 字符串就 == “moo”,函数check里面的"+RawrRawr+" == "hack_this_site" 只是返回一个 false而已。对RawrRawr无影响。if (x == ""+RawrRawr+""),这RawrRawr两边加个””,不就没加吗!所以输入moo:

JavaScript 题目破解过程与解析

这次成功了。

5

JavaScript 题目破解过程与解析

5th mission 又一个密码题。老规矩:

JavaScript 题目破解过程与解析

这里面出现了 %69%6C 什么东西。在很多搜索引擎的地址栏见过。直接利用一下:

JavaScript 题目破解过程与解析

替换:

JavaScript 题目破解过程与解析

输入 ilovemoo

JavaScript 题目破解过程与解析

过了。

6

又是密码题:老规矩。

JavaScript 题目破解过程与解析

有两段javascript,一个在外部。打开之:

JavaScript 题目破解过程与解析

综合看来,有check,checkpass,checkpassw 三个函数。

研究发现,显然密码是:moo pwns

JavaScript 题目破解过程与解析

7

第七个密码题。

JavaScript 题目破解过程与解析

这一次,源代码里Check Password 都搜不出来了。

直接看:

JavaScript 题目破解过程与解析

这是什么玩意儿啊!

似乎JavaScript代码内容被转了码。目测是ASCII码:(明显是 <button……> )

JavaScript 题目破解过程与解析

那就写个Python代码(正好逗号构成tuple):

JavaScript 题目破解过程与解析

翻译出来:

<button onclick='javascript:if(document.getElementById("pass").value=="j00w1n"){alert("YouWIN!");window.location+="?lvl_password="+document.getElementById("pass").value}else{alert("WRONG!Tryagain!")}'>CheckPassword</button>

密码为 j00w1n

JavaScript 题目破解过程与解析

全部完成。