到目前为止,玩这个小游戏并过关的人数已经达到了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关过关方法的更多相关文章

  1. Monyer's Game 6~10关过关方法

    从Monyer's Game开通到现在,已经有50多人通关了.其中绝大部分人,不管是自己独立完成也好,参考别人也罢,都是自己一步一步过去的.像陆羽兄弟甚至已经为游戏做好了整个通关的教程,在此Monye ...

  2. Monyer's Game 0~5关过关方法

    自从Monyer编写了这个通关小游戏,可谓是好事坏事参半吧! 好事是Monyer认识了许多电脑高手,包括netpatch.luoluo等,连LCX这种骨灰级选手也过来了,可谓是收获不小(所以既然我已经 ...

  3. Monyer's game Google Hack关的BT玩法

    玩Monyer's game的朋友都知道里面有Google Hack这关,其实这里本来应该用到的技术是逆向回溯搜索,但因为有好几个人都说利用其他方式看到的密码,所以Monyer不得不重新站在玩家的角度 ...

  4. 2017-3-13 leetcode 4 11 15

    ji那天居然早起了,惊呆我了,眼睛有点儿疼,一直流泪....继续保持 ========================================================== leetco ...

  5. Python3.7&Django1.11.15 兼容性问题

    环境: 1. Windows10 2. python3.7 3. Django1.11.15 启动Django时抛出以下异常: Unhandled exception in thread starte ...

  6. Python: list列表的11个内置方法

    先来逼逼两句: 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用.在VBA中有使用数组,可以把多个数据存储到一起,通过数组下标可以访问数组中的每个元素.Python 中没有数组 ...

  7. Sprint1(第二天11.15)

    Sprint1(第二天11.15) Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http:// ...

  8. 【安富莱】【RL-TCPnet网络教程】第11章 RL-TCPnet调试方法

    第11章      RL-TCPnet调试方法 本章节为大家讲解RL-TCPnet的调试方法,RL-TCPnet的调试功能其实就是通过串口打印实时监控运行状态.而且RL-TCPnet的调试设置比较简单 ...

  9. Notes of Daily Scrum Meeting(11.15)

    Notes of Daily Scrum Meeting(11.15) 今天周六我们的主要工作是把这周落下的一些工作补回来,这是写程序的最后阶段,准备进入测试阶段了,所以之前的工作 要补齐,今天大家的 ...

随机推荐

  1. 值得拥有!精心推荐几款超实用的 CSS 开发工具

    当你开发一个网站或 Web 应用程序的时候,有合适的工具,绝对可以帮助您节省大量的时间.在这篇文章中,我为大家收集了超有用的 CSS 开发工具. 对于 Web 开发人员来说,找到有用的 CSS 开发工 ...

  2. Mysql 修改密码及重置密码方法

    修改密码: //选择数据库 use mysql; //修改密码 update user set password=password('新密码') where user='root'; //立即生效 f ...

  3. IT人的自我导向型学习:学习的4个层次

    谈起软件开发一定会想到用什么技术.采用什么框架,然而在盛行的敏捷之下,人的问题逐渐凸显出来.不少企业请人来培训敏捷开发技术,却发现并不能真正运用起来,其中一个主要原因就是大家还没有很好的学习能力.没有 ...

  4. czxt

    实验三 进程调度模拟程序 1.    目的和要求 1.1.           实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 1.2.           实验要 ...

  5. 重构第19天 提取工厂类(Extract Factory Class)

    理解:本文中的“提取工厂类”是指如果要创建的对象很多,则代码会变的很复杂.一种很好的方法就是提取工厂类. 详解:一般来说我们需要在代码中设置一些对象,以便获得它们的状态,从而使用对象,所谓的设置通常来 ...

  6. 判断s2是否能够被通过s1做循环移位(rotate)得到的字符串是否包含

    问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含.例如,S1=AABCD和s2=CDAA,返回true:给定s1=ABCD和s2=ACBD,返回 ...

  7. 变废为宝,将Discuz废弃的cache机制引入到memory体系中

    Discuz的source/class/cache目录,代表着相应的缓存机制,但实际上废弃很多年了. Discuz用Memory代表了缓存,里面内置了memcache等多种缓存驱动. 但很多人的开发环 ...

  8. spring中的DisposableBean和InitializingBean,ApplicationContextAware的用法

    在spring容器初始化bean和销毁bean的以前的操作有很多种, 目前我知道的有:在xml中定义的时候用init-method和destory-method,还有一种就是定义bean的时候实现Di ...

  9. 回文串--- Girls' research

    HDU   3294 Problem Description One day, sailormoon girls are so delighted that they intend to resear ...

  10. jquery 拓展

    1. 概述 jquery允许拓展自定义的方法, 绑定到$.fn对象上, 编写一个jQuery插件的原则: 给$.fn绑定函数,实现插件的代码逻辑: 插件函数最后要return this;以支持链式调用 ...