level 1

进去一个邮箱,收件箱里有一个登录的链接,垃圾箱里有别人发给他的密码-_-

直接使用该密码即可

level 2

查看登陆界面的源代码可以看到这个

1
2
3
4
5
var username= document.getElementById('username').value;
var password= document.getElementById('password').value;
URL= "members/" + username + " " + password + ".htm";
path = URL;
document.getElementById("status").innerHTML = 'Checking details...';

也就是说它是通过访问https://www.hackthis.co.uk/levels/extras/real/2/members/username password.htm
的方式看看用户名和密码是否正确,这里可以想到,如果我们只访问https://www.hackthis.co.uk/levels/extras/real/2/members/
会发生什么呢?

答案是会把members目录下的文件爆出来,每个htm文件即代表了一个用户,从中试出管理员的账户即可

level 3

查看登陆界面源代码可以看到该网页把登陆的验证放在了前端,将用户输入的用户名和密码转为hash后与login.js里的hash值进行对比,如果正确的话就跳转至正确的页面。也就是说我们的目的是找出login.js里hash对应的明文

按照题目提示,把js代码拿去搜了一下,找到了这个
http://www.otherplaceforum.com/viewtopic.php?t=3228
在这之中找到了
https://jsbin.com/dehekaxopu/edit?js,output
这个脚本可以用于破解makehash函数,可得到的用户名和密码虽然可以通过验证但跳转到的url显示Error accessing resource。这是因为不同的明文可以对应同一个hash,而我们的脚本只能找出一个值。

之后看到代码中有

1
// Login version 4.2 june 2000 Copyright D10n...

这样一行注释,拿去搜索找到了
http://tnecessary.tripod.com/version42.htm
也就是题目登陆代码的生成器,在该生成器的帮助
http://tnecessary.tripod.com/howtouse.htm
中找到了这样的信息

1
2
3
4
members.js - List of Members, Passwords and Destinations.
You can create this file in a text editor or by using the LIST button in the version3.htm page. The format for the member list is:
m[m.length]=new Array("Member Name","Password","Title1","dest1","Title2","dest2");
m[m.length]=new Array("Mike Black","romeo","yahoo","http://www.yahoo.com");

于是访问https://www.hackthis.co.uk/levels/extras/real/3/members.js,得到用户名密码

level 4

首先通过题目给的top 10 passwords中的asdfg可以进入planetbid的admin账户,可以查看到Members db和Bids db
然后通过safetransfer的找回密码可以找出骗子的用户名和邮箱是nemisis和jfelliot@mail.com,并往jfelliot@mail.com发送找回密码的邮件

下一步比较难相想,把Members db的url https://www.hackthis.co.uk/levels/extras/real/4/planetbid/view.php?members&1=user&2=email
改成https://www.hackthis.co.uk/levels/extras/real/4/planetbid/view.php?members&1=user&2=pass
得到密码的md5值,nemisis的密码解出来是chicken.

接着用jfelliot和chicken登录进邮箱,可以得到safetransfer的密码,登录进去可以找到转钱的地方,在Bids db那可以看到委托人的序号是31,卖的东西是Dr Pepper 3ltr RARE,价值1.35英镑。清除了planetbid的日志后,给委托人的账户转1.35英镑即可

level 5

看到url中有个?p=index,随手改成
https://www.hackthis.co.uk/levels/extras/real/5/?p=%27
爆出错误

Warning: file_get_contents(‘.html) [function.file-get-contents]: failed to open stream: No such file or directory in pages on line 22

可以看到这里用了php的file_get_contents读取文件的内容,通过控制get参数p的值就可以访问xx.html文件
而通过%00截断可以不受后面.html的限制,读取任意文件
于是读取登录界面https://www.hackthis.co.uk/levels/extras/real/5/?p=../admin.php%00
可以看到出现了登陆的输入框,查看此时的网页源代码可以看到

1
2
3
4
5
6
7
8
9
	<?php
if(isset($_GET['password']) ){
if( $_GET['password'] == 'princesslovetoast' ){
header("Location: /levels/real/5?p=princesslovetoast");
}
}

?>
<form>

从而得到密码