4

HackThisSite JavaScript 题目破解过程与解析

 3 years ago
source link: https://phuker.github.io/hack-this-site-javascript-challenges.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

过关

全部完成。


Advertisements

Comments


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK