HackGame
来源:互联网 发布:ubuntu删除文件命令 编辑:程序博客网 时间:2024/06/05 16:24
Entry: Chrome browser, HackGame(http://hackgame.blackbap.org/)
通关攻略
#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左右时间,可得明文*#!*;
或者,利用密码破解工具破解
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
参考
习科论坛 Deloz.Net (http://bbs.isilic.org/thread-2270-1-1.html)
习科论坛 (http://isilic.org/thread-2554-1-1.html)
kissthink (http://www.kissthink.com/archive/hackgame.blackbap.org.html
- HackGame
- hackgame
- 电脑报的HackGame,没意思
- hackgame blackbap攻略
- 攻略 http://hackgame.blackbap.org/
- 360 网络攻防 hackgame 解题报告(通关)
- 2014-05-08360 网络攻防 hackgame 解题报告(通关)
- JAVA设计模式之工厂设计模式
- (java)leetcode Longest Common Prefix
- 2015多校第七场总结
- IOS9.0-Swift 引导页面实现
- UIScrollView和UIPageControl 实现让图片无限循环播放和左右滑动
- HackGame
- 我的第一篇博客,谈谈java的值传递
- 广播监听
- 把txt文件转换为tsv文件的python脚本
- POJ 3468 A Simple Problem with Integers(线段树 or 树状数组—区间求和,成段更新)
- Tsinsen 题目A1393. Palisection(回文树)
- KVC在定义Model类中的使用
- [NOIP 2013]火柴排队 逆序对
- 浅谈构造函数与析构函数的调用顺序