Monyer's Game 11~15关过关方法
到目前为止,玩这个小游戏并过关的人数已经达到了81人,首先Monyer要感谢各位的捧场与支持。继续上次的《Monyer's Game 6~10关过关方法》,我们来看剩下几关的过关方法。
但正像我之前说的:通关时只需要一种方法,但通关的思路却有无数种。所以有不同通关思路的朋友,请一定不要吝惜,把思路共享给大家,这样我们都会进步,Monyer这里谢过!
10-11关:
进入第十关,你看到的是:当前用户身份为不是admin,无法显示下一关密码。
学过动态网页语言的朋友都知道,一般的身份验证方式有session和cookies两种,我们先来看看cookies。
一般查看并更改cookies的软件就是IECookiesView了,我们打开这款软件并查找“www.monyer.cn”,会看到键名为“username”,键值为“simpleuser”(英文翻译为:普通用户)。

我们在其上点击右键选择编辑cookies,将simpleuser更改为admin,关闭浏览器并重新打开第十关,这时便发现身份已经是admin了,密码也在眼前——这就是Cookies欺骗了。当然还有其他的方式,譬如抓包后,更改,用NC提交等等。
{
javascript:alert(document.cooke)
javascript:alert(document.cookie="username=admin")
}
11-12关:
进入11关,提示很简单,但已经说明了一切:你的session不是admin,不能查看下一关密码 。
那怎么来更改session呢?入侵服务器?(Monyer很震惊的是,的确有人这么想的,也这么做了——因为从客户端,session是无法更改的。)
这时我们不妨把源代码打开看看:
function check(){ window.location.href="?check="+textfield.value;
并不是之前的直接转向,而是做了一个验证。那么我们随意输入些信息看看,当点击提交后,首先显示了“密码错误”,然后似乎又转回了本页。
但事实上页面已经经过了些许的改变——url地址增加了些东西:set_session=login_false
如果从英文意思上,你应该能看出为:设置session值为登陆失败。所以你几乎不需要多想就该猜出,如果设置session为登陆成功的话,那么真正的session就会设置成为admin。
我们将url参数改为set_session=login_true来试试。
怎么样?密码是不是出来了?
12-13关:
进入12关,提示为:请进入第13关:\163\157\142\145\141\165\164\151\146\165\154\56\141\163\160
这个是8进制编码嘛,我们用monyerjs解密一下看看,为:sobeautiful.asp,但你凭直觉也应该知道不可能这么简简单单的。
我们在密码框输入sobeautiful.asp或者sobeautiful时,没有出现转向,输入的密码会原封不动返回回来。而如果我们直接请求sobeautiful.asp页面会发现返回的第13关为:本页禁止盗链!
所以你应该知道,这个是12关-13关,而不是13关-14关。
什么时候会被认为是盗链呢?无非是从外站访问嘛!估计很多人下载软件时都遇到过这个问题(特别是天空),而解决办法就是到它的网站找链接下载。所以本关即使如此,你需要在本站上构造一个链接进入第13关(当然你也可以通过改数据包)。
那么12关直接返回信息则是有目的的了——返回你输入的一切东西(XSS的一点点思路)。
所以我们可以进行如下构造:<a href="sobeautiful.asp ">in</a>
然后提交,发现的确没有过滤就返回一个链接。

点击链接后,我们则进入了13关。
13-14关:
13关没有任何提示,输入密码时会提示“密码错误!”,所以我们只能从源代码看个究竟:
发现有特殊代码如下:
<!--
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
-->
这是一段asp数据库查询代码,懂SQL注入的朋友一眼就看出pwd没有经过任何过滤就递交到了数据库的查询中了——最典型的SQL漏洞。
所以我们当然要用最经典的注入语句了——“'or''='”。
Monyer简单解释一下这个利用,把它放进select语句中,即是:
select password,pwd from [user] where pwd=‘‘or’‘=''
所以整个语句变为了:选择password和pwd在user表中当pwd等于空或者空等于空。那么这个语句是真命题,所以可以顺利执行并返回给我们password。
(注意,实际上关卡里并没有涉及到数据库,这个地方是SQL注入模拟而已,所以当我在Google Analytics看到有些人想通过此来注入我的网站时,感到挺有意思)
我们提交'or''=',密码即刻出现,我们输入密码即可来到14关。
14-15关:
14关是一个crackme程序,用delphi写的,并用upx做了简单的加密。总的说这个crackme算是世界上相当简单的了。Monyer这里讲一下最简单的“破解”方法。
先脱一下壳,然后直接拉到Ollydbg里,选择插件里的字符串参考。

你几乎还没有开工,就已经看到了16位的密码(monyer的md5,嘿嘿),以及下一关关底的页面url了。
15关关底:
为了防止作弊,这关做了简单的验证——第十关的cookies和第十一关的session。如果有其一不正确将会显示:
虽然你最终没能把cookies设为admin
虽然你最终没能把session设为admin
但恭喜您已经通关!
如果正确,你就可以输入你的大名和想留下的脚印儿了。
好了,到此为止,Monyer's Game所有关卡通关方法解释完毕!
做这个游戏不是要难倒谁,也不是要大家都看着通关方法过去,而是希望大家能自己动手并真真正正地学些东西,这也不枉我的一番苦心!
最后还是要再次感谢大家的支持,以及LCX大哥等人提供的建议,以及NP大哥提供的空间,一并谢过!
Monyer !
Monyer's Game 11~15关过关方法的更多相关文章
- Monyer's Game 6~10关过关方法
从Monyer's Game开通到现在,已经有50多人通关了.其中绝大部分人,不管是自己独立完成也好,参考别人也罢,都是自己一步一步过去的.像陆羽兄弟甚至已经为游戏做好了整个通关的教程,在此Monye ...
- Monyer's Game 0~5关过关方法
自从Monyer编写了这个通关小游戏,可谓是好事坏事参半吧! 好事是Monyer认识了许多电脑高手,包括netpatch.luoluo等,连LCX这种骨灰级选手也过来了,可谓是收获不小(所以既然我已经 ...
- Monyer's game Google Hack关的BT玩法
玩Monyer's game的朋友都知道里面有Google Hack这关,其实这里本来应该用到的技术是逆向回溯搜索,但因为有好几个人都说利用其他方式看到的密码,所以Monyer不得不重新站在玩家的角度 ...
- 2017-3-13 leetcode 4 11 15
ji那天居然早起了,惊呆我了,眼睛有点儿疼,一直流泪....继续保持 ========================================================== leetco ...
- Python3.7&Django1.11.15 兼容性问题
环境: 1. Windows10 2. python3.7 3. Django1.11.15 启动Django时抛出以下异常: Unhandled exception in thread starte ...
- Python: list列表的11个内置方法
先来逼逼两句: 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用.在VBA中有使用数组,可以把多个数据存储到一起,通过数组下标可以访问数组中的每个元素.Python 中没有数组 ...
- Sprint1(第二天11.15)
Sprint1(第二天11.15) Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http:// ...
- 【安富莱】【RL-TCPnet网络教程】第11章 RL-TCPnet调试方法
第11章 RL-TCPnet调试方法 本章节为大家讲解RL-TCPnet的调试方法,RL-TCPnet的调试功能其实就是通过串口打印实时监控运行状态.而且RL-TCPnet的调试设置比较简单 ...
- Notes of Daily Scrum Meeting(11.15)
Notes of Daily Scrum Meeting(11.15) 今天周六我们的主要工作是把这周落下的一些工作补回来,这是写程序的最后阶段,准备进入测试阶段了,所以之前的工作 要补齐,今天大家的 ...
随机推荐
- Odyssey.js – 创建互动的,有吸引力的故事
Odyssey.js 是一个开源工具,它可以让你的地图,叙述和其他多媒体结合成一个美丽的故事.创建新的故事很简单,要求无非是一个现代的 Web 浏览器和一个好的想法.你可以使用现成的模板来控制和设计精 ...
- iOS-验证码倒计时60秒
一. 要求 1.点击获取验证码按钮,60秒倒计时,按钮变成不可点击状态,按钮文字变成倒计时的秒数. 2.当倒计时为0的时候,释放掉定时器NSTimer,按钮变成可以点击状态,按钮文字变成"获 ...
- HTTP Cookie/Session
一.HTTP协议 HTTP协议是一个无状态协议,服务器无法判断若干个请求是否来自同一个浏览器,无法与浏览器进行会话. 二.HTTP会话控制:Cookie Cookie技术是使用在浏览器端的一种缓存技术 ...
- 数论 - n元线性同余方程的解法
note:n元线性同余方程因其编程的特殊性,一般在acm中用的很少,这里只是出于兴趣学了一下 n元线性同余方程的概念: 形如:(a1*x1+a2*x2+....+an*xn)%m=b%m ...
- sql:Oracle11g 表,视图,存储过程结构查询
-- Oracle 11 G --20160921 涂聚文再次修改 --Geovin Du --GetTables SELECT owner, object_name, created FROM al ...
- ActiveReports 报表应用教程 (9)---交互式报表之动态排序
在 ActiveReports 中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取.过滤等功能可以让用户更方便地分析报表数据 ...
- [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题
http://www.cnblogs.com/mizhon/p/4242073.html [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题 最近想 ...
- 爱你.一万年>>数据库基础
嗨!最近学习了一项新的技能,学习了数据库的知识,在这里抛砖引玉,给大家说说,望赐教!!>> 01.首先给大家谈谈为什么要使用数据库? 数据库可以看成是一个永久保存数据的仓库. 可以存储大量 ...
- js判断客户端平台
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- jQuery淡入淡出效果轮播图
用JavaScript做了平滑切换的焦点轮播图之后,用jQuery写了个简单的淡入淡出的轮播图,代码没有做优化,html结构稍微有一些调整,图片部分用ul替换了之前用的div. html结构如下: & ...