http://monyer.com/game/game1/
开始很简单,直接 F12 查看元素找到中间的 first.php 就可以进入第一关了
http://monyer.com/game/game1/first.php
观察 JS 发现密码就是两个空格
http://monyer.com/game/game1/hello.php
可以看到一段代码,把代码扔到控制台里跑一下就出结果了
http://monyer.com/game/game1/424178.php
查看源码可以看到脚本被转化成ASCII码了
把eval里面的内容全都扔进控制台跑一下就看到真正脚本中的密码了
http://monyer.com/game/game1/d4g.php
本关卡会自动跳转回 Level 3 所以可以直接查看源码
直接把两段代码扔进控制台试试
一个是 3bhe
另一个是 a=a.toUpperCase()+1;
把上面的代码格式化一下,可以发现函数返回的p就是真正的代码
所以输出一下p再扔控制台,得到真实 js
a=3bhe,再结合第二段代码a又变大写+1
所以最后密码就是 3BHE1
直接打开 http://monyer.com/game/game1/3BHE1.php 即可
eval(function(p, a, c, k, e, d) {
e = function(c) {
return c.toString(36)
};
if (!''.replace(/^/, String)) {
while (c--) d[c.toString(a)] = k[c] || c.toString(a);
k = [function(e) {
return d[e]
}];
e = function() {
return '\\w+'
};
c = 1
};
while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
console.log(p) //加一个输出
return p
} ('a="e";d c(){b(9.8(\'7\').6==a){5.4.3=a+".2"}1{0("密码错误")}}', 15, 15, 'alert|else|php|href|location|window|value|txt|getElementById|document||if|check|function|3bhe'.split('|'), 0, {}))
//输出的内容再格式化一下
a = "3bhe";
function check() {
if (document.getElementById('txt').value == a) {
window.location.href = a + ".php"
} else {
alert("密码错误")
}
}
http://monyer.com/game/game1/3BHE1.php
翻一翻 源码和里面的 js 发现啥也没有
又看了看消息头找到了密码
http://monyer.com/game/game1/asdf.php
一张被盖住的残缺谷歌图片
发现没藏什么信息,binwalk 也没 walk 出来啥,winhex 也没啥
架上梯子搜一下上面的 Get the latest…
发现被盖住的是 seventeen,输进去试一下还真对了
http://monyer.com/game/game1/seventeen7.php
看到 MD5 就直接去查了一下,还真查出来了
MD5 查询网站
http://monyer.com/game/game1/eighteen8.php
上来就一个 404 最开始以为上一关过的不对
后来发现这个网站真正的 404 是这样的
查看源码发现下面有说明,求10000以内素数和
也可以把元素样式中的 display:none;
勾掉在上面显示
抄上前几天刚研究的素数筛 C/C++ 素数筛 ACM算法 φ(゜▽゜*)♪
#include
using namespace std;
#define MAXN 10000
char prime[MAXN];
int primeList[MAXN],num=0;
void getPrime()
{
memset(prime,1,sizeof(prime));
prime[0]=prime[1]=0;
for(int i=2;i<MAXN;i++)
{
if(prime[i])primeList[num++]=i;
for (int j=0;j<num&&i*primeList[j]<MAXN;j++)
{
prime[i*primeList[j]]=0;
if (i%primeList[j]==0)break;
}
}
}
int main()
{
int sum=0;
getPrime();
for(int i=1;i<MAXN;i++)
{
if(prime[i])sum+=i;
}
cout<<sum;
}
http://monyer.com/game/game1/5736396.php
嗯,那个图片就不截图了。。。
把图片下载下来发现也没有 binwalk 什么事
用 winhex 打开能看到最后有有意义的字符,直接粘进去就过了
http://monyer.com/game/game1/MonyerLikeYou_the10level.php
直接在 Cookie 里把simpleuser改成admin刷新一下密码就出来了
http://monyer.com/game/game1/doyouknow.php?action=show_login_false
session 不是 passer 没找到什么有关的 cookie 之类的
看这个地址有点问题,结果把 false 改成 true 就过了
http://monyer.com/game/game1/smartboy.php
看着像 base64,试一下果然是base64,而且还是两次
有的网站解密之后会出 urlEncode 还得再解一次
这个网站只需要2次base64 base64 解密网站
http://monyer.com/game/game1/sobeautiful.php
在消息头里加上上一关的 Referer 即可
得到本关
查看源码发现是sql注入
实验发现还是 HackBar 好用,并且pwd要post过去
http://monyer.com/game/game1/whatyouneverknow.php
一个 Crackme,直接扔到 IDA 里
发现 UPX,需要先进行脱壳
脱壳之后再扔进 IDA 看到按下按钮的方法里有字符串比较
查看字符串得到密码 9eeee9eb50eff979,直接粘进去发现 404 了
打开注册机注册一下发现真正页面在软件里面
这个 asp 也是假的,真正的页面还是 php 的