自从Monyer编写了这个通关小游戏,可谓是好事坏事参半吧!

好事是Monyer认识了许多电脑高手,包括netpatch、luoluo等,连LCX这种骨灰级选手也过来了,可谓是收获不小(所以既然我已经事先声明这只是游戏,那么就没有阶级性质,也没有技术排斥,所以某些人的言论很令人不屑);坏事是因此服务商的服务器被入侵,网站被挂马,初步分析是整个局域网的arp欺骗或者是IIS的页脚挂马。因为很久之前就对虚拟机的安全性有所顾忌了,所以借机会把网站换走了。

在玩游戏期间,Monyer看到群中的留言时总是自己偷着笑——有些故意“迷惑”人的小把戏居然真的使人中招了!我说过等时候差不多时,我会把过关方法分批公布出来,我不怕别人过关,就怕有些人玩到一半就半途弃之,我的游戏设置是相对简单的,目的就是让大家能够找到充足的自信心,黑客技术离你并不遥远,很对事情往往是你自己不敢想,而并不是你做不到

下面来介绍一下这个小黑客game的0-5关通关方法,一些关卡你需要用到编码转码工具,这你在http://monyer.cn/demo/都可以找到。

0-1关:在Monyer's Game考点里,这个地方的难度是无。

它仅仅是一个门槛,如果你不能通过这关的话,那么后面的关卡几乎不用合计。这里Monyer卖个关子,仅仅告诉你“你需要查看html源代码”,并不给出你第一关地址,大家还是自己找为妙。

1-2关:数据验证有两种方式,一种是客户端验证(在本游戏里是js),一种是服务端验证(在本游戏里是asp)。原则上,任何的本地验证都是可以突破的。

在本关查看源代码,你可以看到验证函数如下:

function check(){
if(textfield.value==" "){
window.location.href="hello.asp";
}else{
     alert("密码错误");
return false;
}
}

几乎是最简单的javascript语句了,它的意思是如果输入密码正确,则转向下一关,否则提示“密码错误”。这里你有两种方法通过:1是输入密码、二是直接访问转向地址。

2-3关:查看源文件的常用方法是:点击鼠标右键,然后选择“查看源文件”。但如果页面屏蔽了鼠标右键呢?本关即是这样设置的。

因为另一种查看源文件的方式就是点击浏览器的“查看”菜单,选择“查看源文件”。

大家看到主要验证函数如下:

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(textfield.value==a){
    window.location.href=a + ".asp";
    }else{
      alert("密码错误");
      return false;
    }
}

第一句即是屏蔽鼠标右键的代码。其他大部分与第一关的相同,只是密码是一系列四则混合运算的结果。这是我看大家过关时憋不住笑的一个地方——很多人是用计算器通过的。

在javascript加解密中有三个常用的处理字符串的函数,一个是eval,意思是执行其中的字符串;一个是alert,意思是以弹出警告窗口方式打印字符串;一个是document.write,意思是在页面打印输出字符串。

大家看到a虽然经过多步运算,但当你载入页面后,其实它早已经运算完成了,所以我们只需要把a的内容显示出来即可,所以你可以使用alert或者是document.write,但是document.write写出来的内容有可能被二次执行,所以我们常用alert。

那么我们在浏览器的地址栏输入“javascript:alert(a)”即可弹出a的值。有部分人抱怨alert的内容无法复制,这种思想是错误的,alert的值也是可以复制的——ctrl+a全选,ctrl+c复制,ctrl+v粘贴即可,有些时候你甚至可以省略ctrl+a这步。

所以通过此方法你甚至不需要编辑源代码就可以直接进入下一关。

3-4关:8进制、10进制和16进制的编码其实都是可以直接用浏览器运行的。这关的验证函数为:

eval(String.fromCharCode(102,117,110,99,116,105,111,110,32,99,104,101,99,107,40,41,123,13,10,9,32,32,
105,102,40,116,101,120,116,102,105,101,108,100,46,118,97,108,117,101,61,61,
34,32,34,41,123,13,10,9,32,32,9,119,105,110,100,111,119,46,108,111,99,97,116,
105,111,110,46,104,114,101,102,61,34,100,52,103,46,97,115,112,34,59,13,10,9,
32,32,125,101,108,115,101,123,13,10,9,32,32,32,32,97,108,101,114,116,40,34,
23494,30721,38169,35823,34,41,59,13,10,9,32,32,32,32,114,101,116,117,114,110
,32,102,97,108,115,101,59,13,10,9,32,32,125,13,10,9,125));

这即是十进制编码。区分8进制、10进制、16进制一般情况下不是很难,如果是8进制,那么里面一定没有8、9数字出现,如果是十进制,那么里面一定没有abcdef出现。像这个加密即是10进制了,这里MonyerJS开始派上用场:

复制10进制字符串到编辑区,选择10进制,点选“65,65,”这种格式,然后点选解密,解密如下:

function check(){
    if(textfield.value==" "){
    window.location.href="d4g.asp";
    }else{
      alert("密码错误");
      return false;
    }
}

大家第一眼可能认为密码为空,其实是一个空格。所以这一关简简单单过去。

4-5关:当我们在第三关进入第四关时,会发现页面居然转了回来,很显然页面加了一个跳转。所以我们需要把代码下载到本地,这里Monyer使用Flashget。

下载回来后,主要的验证函数为:

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==a){7.6.5=a+".4"}3{2("密码错误");1 0}}',15,15,'false|return|alert|else|asp|href|location|window|value|textfield||if|check|function|3bhe'.split('|'),0,{}))

这个是javascript compressor压缩加密,特征字符为eval(function(p,a,c,k,e,d)....。大家可以选择用monyer修改过的javascript compressor解密,但那样比较麻烦,Monyer推荐直接将eval改成document.write使其输出,但不要忘了去掉“<meta http-equiv="refresh" content="0;url=424178.asp">”,它是页面跳转代码。解密出来代码为:

a="3bhe";function check(){if(textfield.value==a){window.location.href=a+".asp"}else{alert("密码错误");return false}}

所以很多人立即就会拿3bhe去试,在出现密码错误时重新看代码会发现底部还有这样一行代码:

<script>eval("\141\75\141\56\164\157\125\160\160\145\162\103\141\163\145\50\51\53\61\73");</script>

这是一个8进制加密代码,你可以用monyerjs进行解密。但是同样你可以直接用document.write来替换eval。

很多加密的代码如果解密函数为eval,基本上你都可以用alert和document.write来进行解密。解密后的代码为:a=a.toUpperCase()+1; 。意思是将a中字符串大写然后将这个字符串与1链接,所以整个密码应该为3BHE1,我们便来到了下一关。

5-6关:ps.2010-06-08 这关改了,以后再写通关方法

自此,你已经完成了0-5关的通关。

至于后面的关卡,还在等待着你,过几天Monyer依旧会告诉你!

Monyer's Game 0~5关过关方法的更多相关文章

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

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

  2. Monyer's Game 11~15关过关方法

    到目前为止,玩这个小游戏并过关的人数已经达到了81人,首先Monyer要感谢各位的捧场与支持.继续上次的<Monyer's Game 6~10关过关方法>,我们来看剩下几关的过关方法. 但 ...

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

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

  4. as3.0 interface接口使用方法

    [转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...

  5. hadoop2.2.0+hive-0.10.0完全分布式安装方法

    hadoop+hive-0.10.0完全分布式安装方法 1.jdk版本:jdk-7u60-linux-x64.tar.gz http://www.oracle.com/technetwork/cn/j ...

  6. c#3.0提供的扩展方法

    在c#3.0之前,想要为内置的类型添加一个方法显然是不可能的.但是,c#3.0提供的扩展方法可以解决这个问题.具体代码如下: public static class ExtendedClass {pu ...

  7. Fundebug支付宝小程序BUG监控插件更新至0.2.0,新增test()方法,报错增加Page数据

    摘要: 0.2.0新增fundebug.test()方法,同时报错增加了Page数据. Fundebug提供专业支付宝小程序BUG监控服务,可以第一时间为您捕获生存环境中小程序的异常.错误或者BUG, ...

  8. Gradle 同步时报错,Could not find com.android.support.constraint:constraint-layout:1.0.0-alpha8的解决方法

    Error:Could not find com.android.support.constraint:constraint-layout:1.0.0-alpha8. 原因: SDK 中可能是没有安装 ...

  9. Fundebug前端JavaScript插件更新至1.6.0,新增test()方法用于测试

    摘要: 1.6.0新增fundebug.test()方法用于测试,请大家及时更新. 默认情况下,Fundebug 插件能够自动捕获未处理的错误(uncaught error).另外,开发者也可以通过使 ...

随机推荐

  1. iOS-设计模式-懒加载

    一.为什么要懒加载? 答: iPhone设备内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么久可能会耗尽iOS设备的内存.这些资源例如大量的数据,图片,音频,过多的控件等. 二.懒加 ...

  2. Android学习笔记之蓝牙通信...

    PS:最近同学问我蓝牙的事,因此自己也就脑补了一下蓝牙... 学习内容: 1.如何实现蓝牙通信技术...   蓝牙通信其实是手机里很常用的一种通信方式,现在的手机中是必然存在蓝牙的,蓝牙通信也是有一部 ...

  3. thread_CyclicBarrier回环栅栏

    CyclicBarrier回环栅栏,字面意思是可循环使用(Cyclic)的屏障(Barrier).通过它可以实现让一组线程等待至某个状态之后再全部同时执行. 它要做的事情是,让一组线程到达一个屏障(也 ...

  4. 与众不同 windows phone (49) - 8.1 新增控件: 概述, ContentDialog, MapControl

    [源码下载] 与众不同 windows phone (49) - 8.1 新增控件: 概述, ContentDialog, MapControl 作者:webabcd 介绍与众不同 windows p ...

  5. Ajax,谷歌提示AutoCompleteExtender控件

    提示内容从数据库中读取: ------------------------------------------页面 <asp:ScriptManager ID="ScriptManag ...

  6. platform总线globalfifo驱动

    功能是使用内存的4k单元,实现读,写,偏移,清除. /************************************************************************* ...

  7. ugui 获取Text的高度,动态改变高度

    项目中需要根据聊天内容的多少.显示外边框的高度.因为Text的内容是不固定的.但宽度是固定的.高度根据文字多少自增 可以通过Text的属性preferredHeight 获取文本框的高度

  8. jetty加载spring-context容器源码分析

    带着疑问开始 web.xml的顺序问题 先拿一个最简单的spring mvc web.xml来说问题,如下图:如果我将三者的顺序倒置或是乱置,会产生什么结果呢? 启动报错?还是加载未知结果?还是毫无影 ...

  9. LGLDatePickerView

    这个是封装 系统的PickerView 使用也比较简单, gihub地址:https://github.com/liguoliangiOS/LGLDatePickerView.git 效果图 使用方法 ...

  10. 小白初学ABP框架,着实累啊

    这几天在学习ABP相关的知识AutoMapper ,AngularJS,Less,DI(dependencyInjection),EntityFramework code first以及相关NuGet ...