此文献给实验室的萌新们,以及刚刚接触CTF的同窗们,但愿能对大家的成长起到一些帮助。php
可能你已经接触过CTF或者对它有所了解,这里我再简单介绍一下。html
CTF(Capture The Flag)中文通常译做夺旗赛,是网络安全技术人员之间进行技术竞技的一种比赛形式,起源于1996年DEFCON全球黑客大会,以比赛形式模拟代替黑客们之间的真实技术比拼。前端
模式java |
说明linux |
解题模式web |
参赛队伍经过互联网或者现场网络参与,相似于各位这次作的线上测评题目,你能够理解为在线答题环节,经过解决网络安全技术挑战题目的分值和时间来排名,一般用于在线选拔赛。题目主要包含Web安全、逆向、密码学、数据分析、隐写、安全编程、代码审计与漏洞挖掘利用等。算法 |
攻防模式shell |
参赛队伍在网络环境内互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务器得到分数,而且经过修补自身服务漏洞进行防护来避免丢分。这种模式竞争较为激烈,比拼参赛队员的智力和技术、团队之间的分工配合与合做、也比拼体力。编程 |
混合模式windows |
结合了上面说的解题模式与攻防模式 ,赛制较为灵活。 |
1.你是管理员吗?
解题连接:http://ctf4.shiyanbar.com/web/root/index.php
第一道题目是一个Web题。一般拿到Web题,常作的是右击查看源代码;利用浏览器调试工具F12查看页面元素、在调试工具的”网络”中观察请求头等。
这题咱们打开页面,发现一个登录框,而且默认用户名为admin。咱们查看页面源码,或者直接从title的提示中,咱们能够发现一个password.txt文件,因而咱们访问一下这个文件http://ctf4.shiyanbar.com/web/root/password.txt,发现这是一个密码字典。 既然是密码字典,因而咱们便尝试对这个登录页面进行口令的暴力破解,用户名admin。这里会用到BurpSuite工具,关于使用这个工具暴力破解密码,你们网上搜索,能够参考这篇文章。
发现了正确口令组合为:admin/Nsf0cuS
咱们利用这组口令去进行登录,发现页面密码框处限制了字符输入长度。咱们能够在前端利用调试工具定位到密码框处,修改密码字段的长度限制。
当咱们登录的时候,在开发者调试工具的“网络”数据查看功能的地方发现咱们的请求数据
这里的cookie一看就是个Base64加密的字符串。固然,这须要一些密码学的知识,关于密码学的学习,你能够参考我转载的这篇博文。
咱们对这个字符串进行Base64解密,
MjkwYmNhNzBjN2RhZTkzZGI2NjQ0ZmEwMGI5ZDgzYjkucGhw
获得
290bca70c7dae93db6644fa00b9d83b9.php
固然,上面的咱们也能够在burpsuite中直接进行登录数据的提交
那么,一样的咱们就访问一下这个文件,发现是一个留言板页面。
当咱们随便进行留言测试的时候,发现没有权限。这里,咱们能够修改cookie以及登录参数进行欺骗。
咱们利用burpsuite抓包时,能够发现两个参数:IsLogin和userlevel。很明显,IsLogin的值标识用户是否登录,userlevel指明用户身份。当咱们把这两个值修改为如图所示内容后,在响应报文里便可发现flag。
这里IsLogin可能比较容易理解,可是userlevel的值为何要改为root?有没有什么窍门呢?咱们回忆题目,“管理员”是一个很重要的提示,通常管理员默认用户名,linux下好比admin,root。windows下是administrator,咱们能够合理猜解。获得的Flag有两个字符,须要进行URL解码
flag{C0ngratulati0n}
2.IOS
解题连接:http://ctf4.shiyanbar.com/web/IOS/index.php
这题页面中提示系统升级到了IOS99,咱们能够想到修改User-Agent进行欺骗。
关于User-Agent,你们参考个人这篇博文加以了解。User Agent是一个特殊字符串头,是一种向访问网站提供咱们所使用的浏览器类型及版本、操做系统及版本、浏览器内核、等信息的标识。咱们访问网页的时候,会自动提交这个参数。经过这个标识,咱们访问的网站能够显示不一样的排版从而适应咱们的浏览器,提供更好的体验。
咱们能够在网上搜索一个IOS99的User-Agent值示例,也能够本身构造,好比
Mozilla/5.0 (iPhone; CPU iPhone OS 99 like Mac OS X) AppleWebKit/0 Safari/536
咱们根据要求,提交信息以后,便可得到flag。
这里检测了浏览器标识 、操做系统标识、渲染引擎标识、版本信息。顺带提一下,最后的浏览器字段,只能使用Safari,你改为其余浏览器就不行,
由于Safari是苹果研发的浏览器,也是iPhone手机、iPodTouch、iPad平板电脑中iOS指定默认浏览器。
flag{LMvBi8w9$m1TrgK4}
3. 照猫画虎
解题连接:http://ctf4.shiyanbar.com/web/copy/index.php
这题,右击查看源代码,页面元素,没有发现。因而咱们分析其网络请求
看到Set-Cookie,是否是熟悉了?一回生,二回熟。咱们先把最后两个%3D字符串解码获得"==",进行base64解密
MjY5OTowNDE1NzQwZWFhNGQ5ZGVjYmM4ZGEwMDFkM2ZkODA1Zg==
获得
2699:0415740eaa4d9decbc8da001d3fd805f
若是你已经有了一些密码学的基础,你应该会发现2699后面是一串通过32位md5加密的数据,若是看不出来,回头在看看密码学的东西去,至少熟悉各类形式的密文,知道其使用的加密算法。
咱们继续,给你们推荐一个加解密md5的网站:http://www.cmd5.com/。
说明后半段的值,是前一个数字的32位md5加密字符串。因而咱们“照猫画虎”,把“1234567890”md5以后,组合起来
1234567890:e807f1fcf82d132f9bb018ca6738a19f
而后把这段字符串通过Base64编码后,修改为cookie地值,提交,便可得到flag
flag{T4mmL9GhpaKWunPE}
4.问题就在这
解题连接:http://ctf4.shiyanbar.com/ste/gpg/john.tar.gz.gpg
提示:找答案 GPG key: GhairfAvvewvukDetolicDer-OcNayd#
这题下载到的是一个gpg文件,文件名为john.tar.gz.gpg。咱们能够从网上了解到这是一个通过GPG加密的数据,加密前的文件极可能是john.tar.gz,linux下的一种压缩文件。
天然地想到,咱们要对这个文件进行解密,可是不管是解题前,仍是解题后,我都强烈建议你深刻了解一下GPG的知识。
windows下有很方便的工具能够进行解密,下载连接:https://gpg4win.org/download.html。固然,kali也自带了gpg工具,关于它的使用,你能够参考个人另外一篇博文:http://www.cnblogs.com/ssooking/p/8378407.html。解密命令:
gpg --output john.tar.gz --decrypt john.tar.gz.gpg
解密时,须要输入密钥:GhairfAvvewvukDetolicDer-OcNayd#。密钥不会在控制台上显示。
解密完成后,咱们解压压缩包,会获得一个pcap数据包文件。
使用用Wireshark分析数据包,里面有许多HTTP数据,咱们直接导出HTTP对象
咱们也能够将数据包导入Charles工具中分析http
咱们能够看到有不少图片,咱们想到了考察内容中的隐写。隐写术是信息隐藏,即不让计划的接收者以外的任何人知道信息的传递事件或信息内容的一门技巧与科学。CTF中隐写术的题目,若是给图片,通常会把一些信息隐藏到图片里。咱们可使用stegsolve工具来分析这些图片。
stegsolve是一个java程序,电脑上须要装有java环境,正确配置了环境变量才能运行。通常双击便可,命令行环境下的运行命令
java -jar stegsolve.jar
当咱们使用该工具对logo.png图片进行分析时,能够发现隐藏的flag。至于为何找到了logo.png这张图片,当你运气很差的时候,你可能须要一个一个试试了。
flag{J0hn_th3_Sn1ff3r}
5.你最美
解题连接:http://ctf4.shiyanbar.com/misc/123/123.exe
这题下载到了一个exe文件,通常给这种文件,基本是考察逆向分析。可是,咱们从这个连接中,发现这个题目属于安全杂项分类(密码学、隐写术、数据包分析等)
咱们把这个程序放进十六进制编辑器中,这里我用的工具是HxD
一看到这个,咱们就能够发现,这是一张图片,只是通过了base64编码(别问为何了,见多了你就知道啦。这种格式很好记),关于这种base64图片存在的意义,你能够看看这篇文章:http://www.javashuo.com/article/p-mulbrilf-cr.html。咱们利用在线工具(http://imgbase64.duoshitong.com/),把这么长的一大串数据转回图片。
发现是一个二维码,扫码便可得到flag。固然,不使用工具,咱们也能够新建一个html文件,把这么长的数据引入img图片标签里,也可以看到图片。相似于
<img src="xxxxxxxxxxxxxxxx">
flag{you are beautiful}
6.shellcode
解题连接:http://ctf4.shiyanbar.com/re/shellcode/shellcode.txt
这道题目给了一段十六进制代码,分类在逆向里,若是你懂逆向和PWN,会写shellcode,可能会顺着它的思路,顺手就写个shellcode出来了。可是写完以后,会发现无法运行,直接崩溃。并且,对萌新来讲,可能会一脸懵,也不会写shellcode。因此这题须要换个思路。
咱们从新观察这些十六进制数据
\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73\x68\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x34\x00\x00\x00\x65\x63\x68\x6f\x20\x5a\x6d\x78\x68\x5a\x33\x74\x54\x53\x45\x56\x73\x62\x47\x4e\x76\x5a\x47\x56\x66\x53\x56\x4e\x66\x63\x32\x39\x66\x51\x32\x39\x76\x62\x48\x30\x4b\x7c\x62\x61\x73\x65\x36\x34\x20\x2d\x64\x00\x57\x53\x89\xe1\xcd\x80
既然是十六进制,咱们就把这些数据放到十六进制编辑器中看看。在文档里,把“\x”全都去掉
6a0b58995266682d6389e7682f736800682f62696e89e352e8340000006563686f205a6d78685a3374545345567362474e765a47566653564e6663323966513239766248304b7c626173653634202d6400575389e1cd80
咱们拷贝这些数据,在HxD中新建一个空白二进制文档,把这些内容粘贴进去。
发现了一段通过了base64编码的数据:ZmxhZ3tTSEVsbGNvZGVfSVNfc29fQ29vbH0K
base64解码,发现它就是flag
flag{SHEllcode_IS_so_Cool}
4、最后的一些话
时刻保持一颗不断学习和进取的心,在坚持不懈的努力中奋勇前进!一路征途,风雨无阻(共勉!)