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) 今天周六我们的主要工作是把这周落下的一些工作补回来,这是写程序的最后阶段,准备进入测试阶段了,所以之前的工作 要补齐,今天大家的 ...
随机推荐
- Tips12: 私人定制 专属的Unity3D 脚本模板
在使用U3D的过程中,新建一个C#脚本,它包含着空的Start()和Update()函数. 根据个人习惯的不同,可能有些人有着自己的脚本风格,每次进去都增删改很麻烦,这里介绍一个更改新建脚本模板的方 ...
- Yii中 RBAC(基于角色的访问控制权限)表结构原理分析
这里有几个概念很重要,我简单用大白话说一下; 权限:就是指用户是否可以执行哪些操作. 如:小张可以发帖.回帖.浏览,小红只能回帖.浏览 角色:就是上面说的一组操作的集合. 如:高级会员有发帖.回帖.删 ...
- redis主从遇到的两个坑
最近在使用redis主从的时候做了下面两件事情: 1 希望redis主从从操作上分析,所有写操作都在master上写,所有读操作都在从上读. 2 由于redis的从是放在本地的,所以有的key的读写操 ...
- 查找最小的k 个元素之C#算法实现
紧接着上一篇微软编程面试100题,这次想解决的是查找最小的K个元素,题目是:输入n 个整数,输出其中最小的k 个.例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 ...
- Gradle学习系列之四——增量式构建
在本系列的上篇文章中,我们讲到了如何读懂Gradle的语法,在本篇文章中,我们将讲到增量式地构建项目. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...
- 在做excel导出时如何将excel直接写在输出流中
之前做excel导出时,我都是先将文件写在服务器上,然后再下载下来,后来发现原来可以直接将文件写在输出流里边. 下面是一个小demo: package com.huaqin.fcstrp.util; ...
- Entity FrameWork 延迟加载的本质(一)
1.集合的标准查询运算符方法,是来自于System.Linq.Enumerable里给IEnumerable接口添加的扩展方法 2.EF上下文里的DBSet<T>里的标准查询运算符方法,来 ...
- Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现
在一般的权限系统里面,可能经常会看到系统的黑名单或者白名单的拦截功能.在一般权限系统里面,常见的黑名单就是禁止用户在某些IP上登录系统,白名单就是允许用户只在某些IP上登录系统.本随笔主要介绍在我的权 ...
- 10个出色的NoSQL数据库
http://www.infoq.com/research/nosql-databases?utm_source=infoqresearch&utm_campaign=lr-homepage ...
- Xcode配置libdc1394
libdc1394是一个开源库,提供了一个Mac下完整的1394相机编程接口,这篇文章将介绍Xcode如何配置该库. 步骤: 1.下载libdc1394的源码,并解压 http://damien.do ...