HackThisSite JavaScript 题目破解过程与解析

HackThisSite JavaScript mission 1-7

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

2020 年 10 月 28 日迁移老博客时注:这篇文章是洒家刚接触计算机和信息安全时的社团作业,那时候 URL decode 全靠往百度地址栏复制,F12 也不会按,属实怀旧了一波。

第 1 关

题目

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

搜索按钮的文字:

搜索按钮的文字

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

check 函数

再次搜索:

check 函数

答案明显:cookies

过关

第 2 关

点进去,直接 fail:

Try again

发现 https://www.hackthissite.org/missions/javascript/2/ 直接跳转到了 https://www.hackthissite.org/missions/javascript/2/fail.php

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

window.location

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

禁用 JavaScript

再点进去:

Click here to win

过关

第 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 函数。

check 函数

这是什么玩意儿?

输入 hack_this_site,错误。

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

过关

这次成功了。

第 5 关

题目

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

check 函数

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

百度

替换:

URL decode

因此输入 ilovemoo

过关

过了。

第 6 关

又是密码题,老规矩:

check 函数

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

源代码

综合看来,有 checkcheckpasscheckpassw 三个函数。

研究发现,显然密码是: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

过关

全部完成。


Comments

您可以匿名发表评论,无需登录 Disqus 账号,勾选“我更想匿名评论”后,姓名和电子邮件分别填写“匿名”和“someone@example.com”然后发表评论即可。您也可以登录 Disqus 账号后发表评论。您的评论可能需要经过我审核后才能显示。点赞投票按钮(Reactions)无需登录即可点击。Disqus 评论系统在中国大陆可能无法正常加载和使用。

License

Creative Commons License

本作品采用知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议CC BY-NC-ND 4.0)进行许可。

This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License (CC BY-NC-ND 4.0).

Top