目录
第一关
第二关
第三关
第四关
第五关
第六关
第七关
第八关
首页 后端开发 php教程 CTF平台hackit题目分析与解答

CTF平台hackit题目分析与解答

Jun 23, 2016 pm 01:05 PM

之前在网上经常看到很多的CTF的练习平台,在加上搞CTF比赛的学弟推荐了这个 CTF平台 。当时在网上看了一下,这个平台推荐的人还是很多的。这个平台是由一个白帽子个人开发的一个平台。趁着这个平台还没有关闭的时候,我抓紧时间来练习一下,找找做CTF比赛的感觉,同时也提升我的渗透能力。当我千辛万苦地做完了之后,发现网上还没有人写这个练习平台的writeup,于是我决定记录下我的做题过程。一方面是为了能够帮助做题遇到困难的同学们,另一方面也是记录我的成长过程。

第一关

第一关很简单,根据题目的提示key藏在页面中。做CTF比赛的题目,第一步就是要查看网页的源代码,查看源代码就可以发现key。

第二关

第二关的提示是:

有时候网页源码并不是唯一可以隐藏信息的。

除了看源代码之后,很多时候还要看题目与分服务器之间发送的网路请求包。这道题目中,key就藏在了网页的响应包中。

Key:SDUH@HEADER

这道题目要求对HTTP协议有一个基本的了解和认识。知道HTTP的请求报文和响应报文的格式,以及每个字段所代表的含义,哪些字段是必须的等等知识。

使用PHP来设置header也是十分地简单

header("Key:SDUH@HEADER");
登录后复制

第三关

第三关的提示是:

right,但还是有地方可以隐藏信息

这道题目就需要使用到burpsuite这个白帽子都很熟悉的工具了。

从上图中可以看到,Cookie中的值为give_me_key的值为no,将其改为yes,然后转发。在页面中就可以看到了key。

$('#key').val("0fC00k13@sc")

这个题目同样是需要看请求包的,不同的是这个题目需要看的是cookie。同时这个题目还告诉我们,在浏览器和服务器进行通信的过程中,我们还可以使用各种拦截工具,如burosuite,fiddle,firefox插件Tamper Data来进行修改。

第四关

第四关中给出了网页的源代码。

if (isset ($_GET['getkey'])) {    if (@ereg ("^[1-9]+$", $_GET['getkey']) === FALSE)        echo '必须输入数字才行';    else if (strpos ($_GET['getkey'], 'givemekey') !== FALSE)           die('Flag: '.$flag);    else        echo 'getkey姿势不对啊';}
登录后复制

这段代码中有2个函数。

@ereg(string pattern, string string):以patttern的规则来解析字符串string,如果解析成功返回True否则返回FALSE;

strpos(str1,str2):查找str2在str1的位置,如果找到返回True否则FALSE;

从代码中我们知道,这道题目要求输入getkey,但是这个值首先必须要是数字,然后这个值又必须含有givemeky这个字符串。这道题目需要用到 ereg()函数的%00字符串截断漏洞 。具体就是当ereg读取字符串string时,如果遇到了%00,后面的字符串就不会被解析。那么我们输入的字符串为: getkey=1%00givemekey 。这样就可以绕过验证,拿到key。 Flag: m4g1c@ppp

第五关

第五关给了一张图片。

遇到这样的题目,一般都是信息隐藏。需要查看图片中隐藏的信息。我们使用UltraEdit打开图片,发现图片后面有一句话。 Hero's Name Add 666 。key为 LeBlanc6666

第六关

这关给的是一个压缩包。提示如下:

压缩密码很短也很简单,秒秒钟破,不过你知道key可以藏在图片的哪里吗?

这个题目说了密码很短,找一个rar的密码爆破软件,得到解压密码是0oO。解压之后同样得到的是一个这样的图片。之前已经说过了,遇到了图片的题目一般都是信息隐藏的题目。要么是在图片中隐藏了信息,要么是在图片中包含了其他的文件。在这个题目上,我之前的思路受到了限制。第五题中已经在图片中包含了信息,那么我认为这题应该是在图片了包含了文件。最后我使用了 binwalk 来对图片进行分析,发现其中确实是包含了文件,但是始终找不出key。后来询问作者才知道,这道题目的key其实很简单,就隐藏在了图片的exif信息中。

在版权信息中,有 65 83 77 68 68 64 49 48 ,转换为字母是 ASMDD@10 ,这个就是key。

第七关

第七题给出的题目的形式如下:

http://3.hackit.sinaapp.com/index.php?file=flag.php

提示是:

Key就在这个页面,不是headers也不是cookie,如果你知道如何读取这个php的源码,key就是你的了

这道题目就是一个典型的文件包含的题目,而且这道题目还需要读取文件的源代码。这篇 php文件包含漏洞 中的题目和本题的题目大致相同。那么我们就使用使用下面的代码来显示页面的源代码。

http://3.hackit.sinaapp.com/index.php?file=php://filter/read=convert.base64-encode/resource=flag.php
登录后复制

网页返回的源代码base64编码代码如下:

PD9waHAKLy9LZXk6QTg5c2FkU0QKPz4KPGgzPktleeWwseWcqOi/meS4qumhtemdou+8jOS4jeaYr2hlYWRlcnPkuZ/kuI3mmK9jb29raWUs5aaC5p6c5L2g55+l6YGT5aaC5L2V6K+75Y+W6L+Z5LiqcGhw55qE5rqQ56CB77yMa2V55bCx5piv5L2g55qE5LqGPC9oMz4=
登录后复制

解码之后得到key为 Key:A89sadSD

第八关

将文件下载之后发现一个C#编写的exe程序,那么就是一个简单的逆向的题目。使用C#编写的程序,就可以直接使用 IISpy 来看源代码。找出其中的关键代码如下:

string text = string.Empty;for (int i = 0; i <= this.username.TextLength; i++){	string arg_A5_0 = text;	short num = (short)Encoding.ASCII.GetBytes(this.password.Text[i].ToString())[0];	text = arg_A5_0 + num.ToString();}if (text.Equals("837450777811510050")){	MessageBox.Show("right!the password is flag!");}else{	MessageBox.Show("Error! Try Again");}
登录后复制

其中关键的就在于 (short)Encoding.ASCII.GetBytes(this.password.Text[i].ToString()) 。这段代码就是去除password中的每一个字符,然后获得字符的ACSII码,看最后的ASCII码为 837450777811510050 ,我们得到对应的password为SJ2MNsd2。这个就是key了。

最后,就进入了最后的 闯关成功页面

当自己一路走来,最终到达了这个页面的时候,我还是比较兴奋的,就像是玩游戏最后通关的感觉一样。虽然总体说来这个上面的题目不是很难,其实比较适合刚刚入门CTF比赛的新手,我感觉这个平台上面的题目我也恰好比较适合,在这个平台上面我也学到了很多,尤其是图片的隐写技术。做完了这个平台上面之后,我后来做WHCTF(可以看这篇文章)上面的题目时遇到的图片题目,我还是能够动手的。一段旅途走完了之后,总会有新的收获的。通过这个平台,我学习了很多,我也意识到我需要学习和了解的内容还有很多。路漫漫其修远兮。

最后非常感觉作者提供了一个这样好的平台,让我这样的菜鸟有一个好的练习的地方。最后附上作者的blog地址。 sco4x0’s blog

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

11个最佳PHP URL缩短脚本(免费和高级) 11个最佳PHP URL缩短脚本(免费和高级) Mar 03, 2025 am 10:49 AM

长URL(通常用关键字和跟踪参数都混乱)可以阻止访问者。 URL缩短脚本提供了解决方案,创建了简洁的链接,非常适合社交媒体和其他平台。 这些脚本对于单个网站很有价值

Instagram API简介 Instagram API简介 Mar 02, 2025 am 09:32 AM

在Facebook在2012年通过Facebook备受瞩目的收购之后,Instagram采用了两套API供第三方使用。这些是Instagram Graph API和Instagram Basic Display API。作为开发人员建立一个需要信息的应用程序

在Laravel中使用Flash会话数据 在Laravel中使用Flash会话数据 Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

构建具有Laravel后端的React应用程序:第2部分,React 构建具有Laravel后端的React应用程序:第2部分,React Mar 04, 2025 am 09:33 AM

这是有关用Laravel后端构建React应用程序的系列的第二个也是最后一部分。在该系列的第一部分中,我们使用Laravel为基本的产品上市应用程序创建了一个RESTFUL API。在本教程中,我们将成为开发人员

简化的HTTP响应在Laravel测试中模拟了 简化的HTTP响应在Laravel测试中模拟了 Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

宣布 2025 年 PHP 形势调查 宣布 2025 年 PHP 形势调查 Mar 03, 2025 pm 04:20 PM

2025年的PHP景观调查调查了当前的PHP发展趋势。 它探讨了框架用法,部署方法和挑战,旨在为开发人员和企业提供见解。 该调查预计现代PHP Versio的增长

See all articles