HackThisSite JavaScript mission 1-7
题目来源:https://www.hackthissite.org/missions/javascript/
2020 年 10 月 28 日迁移老博客时注:这篇文章是洒家刚接触计算机和信息安全时的社团作业,那时候 URL decode 全靠往百度地址栏复制,F12 也不会按,属实怀旧了一波。
第 1 关¶

我先尝试输入 123456,当然失败了。
搜索按钮的文字:

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

再次搜索:

答案明显:cookies

第 2 关¶
点进去,直接 fail:

发现 https://www.hackthissite.org/missions/javascript/2/ 直接跳转到了 https://www.hackthissite.org/missions/javascript/2/fail.php
我在未跳转时按下了 ESC 键,然后在前面的源代码发现这个:

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

再点进去:


第 3 关¶
出现了这个东西:

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 个字母

看来是过了?
第 4 关¶
第 4 个 mission,又是密码:

当然,一开始猜测,报错误。
同上某题方法,搜索 password 于源代码。发现:
<button onclick="javascript:check(document.getElementById('pass').value)">Check Password</button>
同样把 <input> 框的文字传递给 check 函数。

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

这次成功了。
第 5 关¶

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

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

替换:

因此输入 ilovemoo

过了。
第 6 关¶
又是密码题,老规矩:

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

综合看来,有 check,checkpass,checkpassw 三个函数。
研究发现,显然密码是:moo pwns

第 7 关¶
第七个密码题。

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

这是什么玩意儿啊!
似乎 JavaScript 代码内容被转了码。目测是 ASCII 码:(明显是 <button ...... )

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

翻译出来:
<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

全部完成。