到目前为止,玩这个小游戏并过关的人数已经达到了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. [Python] Remote debugging by Pycharm

    From: http://blog.csdn.net/u013088062/article/details/50170551 虚拟环境配置 配置远程解释器 设想这样一种情况,你在一个平台上操作你的工程 ...

  2. Testing - Selenium

    Selenium http://www.seleniumhq.org/ User Guide http://www.seleniumhq.org/docs/ Webdriver中文社区 http:// ...

  3. 资料下载:生活方向盘PPT以及活动录音(2011.02)

    本文已挪至 http://www.zhoujingen.cn/blog/676.html 免费PDF和活动录音下载: http://down.51cto.com/data/216824 敏捷个人生活方 ...

  4. E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系

    安装terminator等一些软件等时候,遇到了这样等问题 leo@leo:~$ sudo apt-get install terminator [sudo] password for leo: 正在 ...

  5. mysql truncate带有被引用外键的表时报错解决方法

    清空具有外键约束的表时报ERROR 1701(42000)的解决   mysql> truncate table t_users;ERROR 1701 (42000): Cannot trunc ...

  6. List<?>和List<T>的区别?

    出自:https://www.zhihu.com/question/31429113

  7. IntelliJ IDEA 的SVN配置与使用

    SVN 首先提一句,IDEA对各种的版本控制工具的支持是非常好的,点击3 打开系统设置界面,就可以看到他有专门的一栏 Version Control 里边是对各种版本控制工具的支持,其中我要用的SVN ...

  8. .NET开发 正则表达式中的 Bug

    又发现了一个 .net 的 bug!最近在使用正则表达式的时候发现:在忽略大小写的时候,匹配值从 0xff 到 0xffff 之间的所有字符,正则表达式竟然也能匹配两个 ASCII 字符:i(code ...

  9. csharp: WebBrowser read baidumap

    setpoint.html: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Typ ...

  10. oracle user account locked

    1.Question describe when you use account scott/tiger connect to oracle, you will see "the user ...