HackGame

来源:互联网 发布:ubuntu删除文件命令 编辑:程序博客网 时间:2024/06/05 16:24

Entry: Chrome browser, HackGame(http://hackgame.blackbap.org/)


通关攻略


# password 1 password 2 comegamepoint222 3 *#!* 4 pdfisWidely! 5 URsoGreat

#1: 突破客户端

通关思路

当我们输入任意字符串提交时,网页提示“密码不能为非空”;当我们不输入字符串直接提交时,网页提示“这是必填字段”。

考虑到这一关的名字“突破客户端”,显然得从客户端代码分析入手。

function chk_submit() {if ( $( '#password' ).val() == '' ) {    notice_me('#password', '密码不能为空');} else {    notice_me('#password', '密码不能为非空');}//JS说无论如何您都是错的return false;}

鉴于上述代码,我们变得到了通关思路:输入密码后不经过这段代码检测。同时,密码在右侧进度栏中已经有了提示:password.

通关步骤

a. 按下f12,打开开发人员工具,在console中输入如下语句:

   chk_submit = true;

b. 在输入框中输入密码:password,则可通过此关。


#2: 逆向解密

通关思路

根据通关进度栏中的“提示在这里”,“这里”被加粗,点击后却无法进入。因此,查看源代码,发现相应位置用注释给出了一个网址:

<b class="stress">    这里<!-- tip/nozend.php --></b>

因此,我们在地址栏中输入:http://hackgame.blackbap.org/tip/nozend.php。得到如下一份代码:

<?phphighlight_file( __FILE__ );function notrealmd5code($string,$operation='ENCODE') {    if ($operation=='ENCODE'){        $OutTxt = "";        for ($x=0;$x<strlen($string);$x++) {            $nr = ord($string[$x]);            if ($nr < 128) {                $nr += 128;            }            elseif ($nr > 127) {                $nr -= 128;            }            $nr = 255 - $nr;            $OutTxt .= sprintf("%02x", $nr);        }        return $OutTxt;    } else {        /* DECODE MISS         * ord  Return ASCII value of character         */        return '';    }}echo notrealmd5code('1c10121a181e121a0f1016110b4d4d4d','DECODE');?>

结合本关关名“逆向解密”,不难想到根据上述代码逆向思考得到密码。

通关步骤

a. 完善上述代码中的DECODE部分,如下所示:

<?php//  highlight_file( __FILE__ );    function notrealmd5code($string,$operation='ENCODE') {        if ($operation=='ENCODE'){            $OutTxt = "";            for ($x=0;$x<strlen($string);$x++) {                $nr = ord($string[$x]);                if ($nr < 128) {                    $nr += 128;                }                elseif ($nr > 127) {                    $nr -= 128;                }                $nr = 255 - $nr;                $OutTxt .= sprintf("%02x", $nr);            }            return $OutTxt;        } else {            /* DECODE MISS             * ord  Return ASCII value of character             */            $OutTxt = "";            for($i = 0; $i < strlen($string); $i += 2)            {                $nr = intval(substr($string, $i, 2), 16);                $nr = 255 - $nr;                if ($nr < 128)                {                    $nr += 128;                }                elseif ($nr > 127)                {                    $nr -= 128;                }                $OutTxt .= pack("i", $nr);            }            return $OutTxt;        }    }    echo notrealmd5code('1c10121a181e121a0f1016110b4d4d4d','DECODE');?>

b. 运行上述PHP代码得到字符串comegamepoint222,输入到输入框中并提交,则可通过此关。


#3: 寻找Password

通关思路

根据提示“此关提供一个小工具”,单击此处得到一密码破解工具。

输入Windows 密码存放路径Linux 用户配置文件存放路径,得到如下两条提示

 d18e760f2b15a239328274a447cd67f7 - > NTLM? $1$1zUVF6AN$uHBYbOv4WW1Z9kkKFnJ2v. - > MD5(UNIX)?

显然,NTLM和MD5(UNIX)为加密算法,利用密码破解工具得到相应的明文即可。

通关步骤

a. 搜索得到Windows密码存放路径c:\windows\system32\config\SAM或Linux密码存放路径/etc/passwd

b. 利用密码破解工具破解d18e760f2b15a239328274a447cd67f7 -> NTLM?,运行1min左右时间,可得明文*#!*

或者,利用密码破解工具破解1 1zUVF6AN$uHBYbOv4WW1Z9kkKFnJ2v. -> MD5(UNIX)?,运行3h左右时间,可得明文*#!*

c. 任选上一明文输入到密码框中即可通关。


#4: 挖掘规则里面的漏洞

通关思路

根据提示“here is a PDF file for you”,单击此处得到一空PDF文件。

根据右侧进度栏提示“或者您能在该链接获得灵感 提示信息”,单击后打开新网页。查找相关信息,得到解题思路。

通关步骤

a. 使用VIM打开PDF文件,定位到\ACTION处,发现此处有一串16进制串:70617373776F72642069733A7064666973576964656C7921

b. 将该字符串另存到另一文件中,用VIM打开后,使用下述命令:

%!xxd -p -r

得到字符串:pdfisWidely!

c. 将上述明文输入到密码框里即可通关。


#5: 页面自身的缺陷

通关思路

任意输入一字符串后,出现提示信息为“有时候需要发挥您的想象力与观察力”。

查看代码后,发现有如下一段定义了一个函数的代码比较怪异,这个函数从未被使用过:

function do_other( extra ) {    //getpwd    var k_id = '#try';    var l_id = k_id + '_l';    var t_id = k_id + '_tip';    var data = '&do=check&val=&extra=' + extra;    ajax_post(        'index.php',        data,        function() {            $( l_id ).html( get_loadinghtml('c') );            $( l_id ).show();        },        function( ret ) {            $( l_id ).hide();            $('#ret').html( ret );        }    );}

因此,联想到输入如下脚本到输入框中:

<script>do_other('getpwd');</script>

从而可得到明文。

通关步骤

a. 在输入框中输入上述脚本,得到密码URsoGreat

b. 将上述密码输入到密码框里即可通关。


技术


  • 网络技术

    • 前端技术: HTML + CSS + Javascript

    • 后端技术: IIS + PHP + MySQL

  • 文件技术

    • PDF file

    • Vim

  • 加密与解密技术


技术论坛

  • 习科技术论坛

    • http://bbs.isilic.org

    • http://bbs.blackbap.org

    • http://bbs.blackbap.org/viewthread.php?tid=1737

  • 电脑报技术论坛

    • http://bbs.icpcw.com

参考


  1. 习科论坛 Deloz.Net (http://bbs.isilic.org/thread-2270-1-1.html)

  2. 习科论坛 (http://isilic.org/thread-2554-1-1.html)

  3. kissthink (http://www.kissthink.com/archive/hackgame.blackbap.org.html


0 0
原创粉丝点击