梦之光芒/Monyer game1 Writeup

  • A homework of NEFU NSI
  • 好久没发现这种好玩的东西了 ヾ(•ω•`)o
  • So I write down a writeup here.

Level 0


http://monyer.com/game/game1/
在这里插入图片描述
开始很简单,直接 F12 查看元素找到中间的 first.php 就可以进入第一关了
在这里插入图片描述

Level 1


http://monyer.com/game/game1/first.php
在这里插入图片描述
观察 JS 发现密码就是两个空格
在这里插入图片描述

Level 2


http://monyer.com/game/game1/hello.php
在这里插入图片描述
可以看到一段代码,把代码扔到控制台里跑一下就出结果了
在这里插入图片描述
在这里插入图片描述

Level 3


http://monyer.com/game/game1/424178.php
在这里插入图片描述
查看源码可以看到脚本被转化成ASCII码了
把eval里面的内容全都扔进控制台跑一下就看到真正脚本中的密码了
在这里插入图片描述
在这里插入图片描述

Level 4


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("密码错误")
    }
}

Level 5


http://monyer.com/game/game1/3BHE1.php
在这里插入图片描述
翻一翻 源码和里面的 js 发现啥也没有
又看了看消息头找到了密码
在这里插入图片描述

Level 6


http://monyer.com/game/game1/asdf.php
在这里插入图片描述
一张被盖住的残缺谷歌图片
发现没藏什么信息,binwalk 也没 walk 出来啥,winhex 也没啥
架上梯子搜一下上面的 Get the latest…
发现被盖住的是 seventeen,输进去试一下还真对了
在这里插入图片描述

Level 7


http://monyer.com/game/game1/seventeen7.php
在这里插入图片描述
看到 MD5 就直接去查了一下,还真查出来了
MD5 查询网站
在这里插入图片描述

Level 8


http://monyer.com/game/game1/eighteen8.php
在这里插入图片描述
上来就一个 404 最开始以为上一关过的不对
后来发现这个网站真正的 404 是这样的
在这里插入图片描述
查看源码发现下面有说明,求10000以内素数和
也可以把元素样式中的 display:none; 勾掉在上面显示
在这里插入图片描述
抄上前几天刚研究的素数筛 C/C++ 素数筛 ACM算法 φ(゜▽゜*)♪

#include <bits/stdc++.h>
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;
}

输出结果即为本关密码
在这里插入图片描述

Level 9


http://monyer.com/game/game1/5736396.php
在这里插入图片描述
嗯,那个图片就不截图了。。。
把图片下载下来发现也没有 binwalk 什么事
用 winhex 打开能看到最后有有意义的字符,直接粘进去就过了
在这里插入图片描述

Level 10


http://monyer.com/game/game1/MonyerLikeYou_the10level.php
在这里插入图片描述
直接在 Cookie 里把simpleuser改成admin刷新一下密码就出来了
在这里插入图片描述

Level 11


http://monyer.com/game/game1/doyouknow.php?action=show_login_false
在这里插入图片描述
session 不是 passer 没找到什么有关的 cookie 之类的
看这个地址有点问题,结果把 false 改成 true 就过了
在这里插入图片描述

Level 12


http://monyer.com/game/game1/smartboy.php
在这里插入图片描述
看着像 base64,试一下果然是base64,而且还是两次
有的网站解密之后会出 urlEncode 还得再解一次
这个网站只需要2次base64 base64 解密网站
在这里插入图片描述

Level 13


http://monyer.com/game/game1/sobeautiful.php
在这里插入图片描述
在消息头里加上上一关的 Referer 即可
在这里插入图片描述
得到本关
在这里插入图片描述
查看源码发现是sql注入
在这里插入图片描述
实验发现还是 HackBar 好用,并且pwd要post过去
在这里插入图片描述

Level 14


http://monyer.com/game/game1/whatyouneverknow.php
在这里插入图片描述
一个 Crackme,直接扔到 IDA 里
在这里插入图片描述
发现 UPX,需要先进行脱壳
在这里插入图片描述
脱壳之后再扔进 IDA 看到按下按钮的方法里有字符串比较
在这里插入图片描述
查看字符串得到密码 9eeee9eb50eff979,直接粘进去发现 404 了
打开注册机注册一下发现真正页面在软件里面
在这里插入图片描述
在这里插入图片描述
这个 asp 也是假的,真正的页面还是 php 的

Level 15


http://monyer.com/game/game1/ipasscrackme.php
过关了! ヾ(•ω•`)o
在这里插入图片描述

发布了32 篇原创文章 · 获赞 104 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/csg999/article/details/103985501