地址:http://monyer.com/game/game1/
游戏开始:
F12查看源代码,可以看到进入游戏第一关的地址
第一关
http://monyer.com/game/game1/first.php
查看页面源代码:
function check(){
if(document.getElementById('txt').value==" "){
window.location.href="hello.php";
}else{
alert("密码错误");
}
}
当用户输入的内容等于两个空的空格时,进入下一关
第二关
http://monyer.com/game/game1/hello.php
查看页面源代码:
document.oncontextmenu=function(){return false};
var a,b,c,d,e,f,g;
a = 3.14;
b = a * 2;
c = a + b;
d = c / b + a;
e = c - d * b + a;
f = e + d /c -b * a;
g = f * e - d + c * b + a;
a = g * g;
a = Math.floor(a);
function check(){
if(document.getElementById("txt").value==a){
window.location.href=a + ".php";
}else{
alert("密码错误");
return false;
}
}
是一些算术计算的公式,我们只需要在浏览器控制台输入一个a,就能出现答案了。
第三关
http://monyer.com/game/game1/424178.php
查看源代码:
将那段javascript代码复制下来,然后把eval改成alert,带入浏览器控制台执行
alert(String.fromCharCode(102,117,110,99,116,105,111,110,32,99,104,101,99,107,40,41,123,13,10,09,118,97,114,32,97,32,61,32,39,100,52,103,39,59,13,10,09,105,102,40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,39,116,120,116,39,41,46,118,97,108,117,101,61,61,97,41,123,13,10,09,09,119,105,110,100,111,119,46,108,111,99,97,116,105,111,110,46,104,114,101,102,61,97,43,34,46,112,104,112,34,59,13,10,09,125,101,108,115,101,123,13,10,09,09,97,108,101,114,116,40,34,23494,30721,38169,35823,34,41,59,13,10,09,125,13,10,125));
可以看到一段javascript代码:
我们输入的内容等于d4g,即可进入下一关。
function check(){
var a = 'd4g';
if(document.getElementById('txt').value==a){
window.location.href=a+".php";
}else{
alert("密码错误");
}
}
第四关
当你输入答案的时候,又会跳回第三关,你是不是很迷惑,当然,这个作者留的一个坑。
打开burp suite,输入d4g,进行拦截,选择Response to this requests,抓取返回包。
发送数据包过后,我们看到了d4g.php的页面源代码。
<meta http-equiv="refresh" content="0;url=424178.php">
这段代码表示,每隔0秒刷新一次页面,并且跳转到424178.php。
我们将这段代码删除,然后进行发包,就可以来到第四关了。
monyer.com/game/game1/d4g.php
查看源代码:
有两段javascript代码
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]);
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, {}))
eval("\141\75\141\56\164\157\125\160\160\145\162\103\141\163\145\50\51\53\61\73");
第一段代码我就不分析了…(本人javascript不太行),我们就直接来看第二段吧,老手段,将eval改成alert带入浏览器控制台执行
a=a.toUpperCase()+1;
a肯定是我们要的答案,日常操作,控制台输入个a
提交3BHE1即可进入下一关
第五关
http://monyer.com/game/game1/3BHE1.php
题目提示,藏在页面里了。
F12,然后点击Network,刷新一下,可以看到返回包中有一段话。
the password for the next level is asdf
提交密码asdf,即可进入下一关。
第六关
http://monyer.com/game/game1/asdf.php
查看源代码:
给了提示,通过以下图片中线索寻找密码
可以看出作者对某些字符打了码,打码的部分就是答案吧
我们可以看看不打码的部分
Get the latest fashion,beauty,dating,and health tips.Plus,win ferrbies,take quizzes,and check your daily horoscope!
科学上网,直接复制这段话搜索
密码就是seventeen,进入下一关
第七关
http://monyer.com/game/game1/seventeen7.php
直接MD5破解:
第八关
http://monyer.com/game/game1/eighteen8.php
刚开始以为目录不存在,迷得很呢。
查看页面源代码,作者给了提示:
第8关
朋友您好,第8关欢迎您!
我对您的聪明才智感到惊讶!
相信我,现在世界上85%以上的人都在你之下,
所以你可以大步向前,义无反顾地进行你的事业了。
因为只要你肯努力,不畏惧挫折,这个世界上没有难倒你的事。
那么继续我们的约定,我将告诉你第9关的入口:
10000以内所有质数和.php
求出10000以内所有质数和,python脚本运算:
def _sum(num,n):
return(sum(num))
num=[];
i=2
for i in range(2,10000):
j=2
for j in range(2,i):
if(i%j==0):
break
else:
num.append(i)
n=len(num)
ans = _sum(num,n)
print (ans)
答案为:5736396
第九关
http://monyer.com/game/game1/5736396.php
作者给了提示:你得往美女肉里面看,看仔细哦!(我信你个鬼哦,当时我用放大镜看了两个小时,鼻血都流干了,还是没发现!!)
我们将图片保存,用文本工具打开,即可看到密码。
第十关
http://monyer.com/game/game1/MonyerLikeYou_the10level.php
根据页面提示,当身份为admin时,即可显示密码。
修改cookie,username的值改成admin
第十一关
http://monyer.com/game/game1/doyouknow.php?action=show_login_false
和上一关相同,修改PHPSESSID的值为passer,即可查看密码。
第十二关
http://monyer.com/game/game1/smartboy.php
给了一段代码,将代码进行base64解码,再进行url解码,循环两次,就可以看到明文了。
第十三关
http://monyer.com/game/game1/sobeautiful.php
直接访问时看到页面提示:
利用hackbar,勾选Referer。
添加上地址:http://monyer.com/game/game1/smartboy.php?
查看页面源代码,发现一段注释内容
<!--
dim connect
Response.Expires=0 '系统数据库连接
Set connect=Server.CreateObject("ADODB.Connection")
connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("/Database.mdb") & ";Mode=ReadWrite|Share Deny None;Persist Security Info=False"
set rss=server.createobject("adodb.recordset")
sqlstr="select password,pwd from [user] where pwd='"&request("pwd")&"'"
rss.open sqlstr,connect,1,1
if rss.bof and rss.eof then
response.write("密码错误")
else
response.write(rss("password"))
end if
rss.close
set rss=nothing
connect.close
set connect=nothing
-->
可以看到pwd传参并没有进行过滤,只需要我们查到一条记录,即可获取密码
万能密码:
' or '1'='1
第十四关
http://www.monyer.com/game/game1/whatyouneverknow.php
打开exe,需要输入注册码。
查壳:
脱壳:
用Ollydbg打开,搜索字符串。
看到注册成功的字符
可以看到在判断之前,程序将一个值mov到edx寄存器中,然后进行判断。
- JE指令 : 等于则跳转
输入到注册机中。
密码为ipasscrackme
如果提交后如果提示:
添加第十关和第十一关所使用的cookie