本人纯小白,去CGCTF虐自己,啥工具也不会,甚至连别人的write up都看不懂,一题百度一万次,磕磕碰碰终于做出了几道题,再回过来看看,发现自己好多题又不会做了。所以还是自己写write up,一来增强记忆,二来回顾一下收获成就感,三来给别的小白很简明的解题思路,最起码不至于看不懂。 以下都是做过之后回过头来的反思(画外音:也就是刚开始都不会做的题)
本人用的是360浏览器。
第一题:签到题
打开网页链接,右键查看源代码(或者直接Ctrl+U)
得到下图
发现代码中有nctf{flag_admiaanaaaaaaaaaaa},get it!
第二题:md5 collision
点开题目发现有这么一段代码:
大致的意思就是需要你提供一个a的值,让a不等于 ’QNKCDZO’ 并且a的md5编码和 ’QNKCDZO’ 必须一样
而根据下表整理的
QNKCDZO0
e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
随便选一个作为a的值就可以了。而题目的网址显然是php脚本,根据php语言,在网址后面添加 ?a=*** 就是输入a的值
我这里写的是
直接得到flag,get it!
第三题:签到题2
打开题目链接,查看源代码
此处需要对html语言有一定了解,我们看到在input的属性设置里有对maxlength即最长输入长度的限制,而根据他让我们输入的zhimakaimen字符串长度为11,所以如果单纯输入zhimakaimen然后提交,实质上你只输入了zhimakaime,n被忽略了,所以解决方法是修改参数。
按F12打开控制台,找到maxlength,双击,修改为11(或者你也可以设置成更长的),然后再在方框内输入zhimakaimen,submit
Get it!
第四题:这题不是WEB
打开题目链接,发现是这么个玩意儿
尝试查看源代码
发现了2.gif 这个文件,好奇心告诉我这玩意儿肯定不对,因为别的地方没有提示了。
好,回到原网页,右击图片另存到桌面,然后打开他,发现还是一张动图……
好像剧情不对,盯着这个2.gif看了半天,怎么让他告诉我flag是啥呢?
我灵机一动,把它拖到了notepad++里,然后就出来这样子的东西
这满屏的乱码我也看不懂啊,然后我就往下翻翻到最底下,刚要关掉,发现最后好像有串不是乱码……
Get it!
第五题:层层递进
看这题目的名字就感觉满满的提示,二话不说打开题目链接,发现一个类似于搜索引擎的界面,常规操作查看源码,搜查一番后没有发现什么特殊的信息,除了
最后的两个链接,判断一下第二个链接应该是这个盗版网页的正版,点开来看一下也是,那么猫腻应该在第一个链接里。
点开来,发现和之前的网页差不多,此时想到题目名为“层层递进”,那么道理应该是一样的,不出所料最后出现了一个404.htm,而且打开发现
这么长一段文字,那么这应该是我们的最终目标,再查看源码
看到整整齐齐的格式设置,然后竖着看,找到了flag,get it!
但是呢,还有一个更简单的方法,利用抓包工具Burp Suite对题目链接爬虫。
我自己是学了两个抓包工具,一个是Burp Suite,一个是fiddler,都有各自的优势。前者有爬虫功能,适用于这题。
对于ctf的工具,可以百度ctftools,你会有惊喜!
关于Burp Suite的专业破解版,搬砖于此处https://blog.csdn.net/qq_37706414/article/details/78702411
需要注意的是下载的是.jar文件,必须配套Java的环境,这个网上直接下载,开源的。
打开Burp Suite.jar然后一路默认点下去,先配置环境
如图,这是代理服务器设置,我们点下面的Import/export CA certificate
出现了这么个框,然后点选第一个,Next
如图,名字随便取,但是后缀名要写成.crt,这是证书格式
然后回到桌面,会看到这个文件,打开360浏览器,选项——高级设置——HTTPS/SSL——管理证书——受信任的根证书颁发机构——导入——选择你刚才导出的证书——一路默认到如下图,导入成功后可以看到该目录下多了一个名为“PortSwigger CA”的证书,然后就可以用Burp Suite抓包了。
下一步,依然是选项——高级设置——网络——代理服务器设置——在代理服务器列表中加入“127.0.0.1:8080”,这是burpsuite默认的代理服务器,端口为8080
回到burp suite,proxy——options,在刚才导入证书的地方的下面,有这么一个选择框,把前面的都点上,否则你可以试一下,每次你尝试打开网页,burp suite都会拦截申请,然后等你手动Forward释放掉(如果你前面的intercept is on的话),当然你也可以不点,把intercept关掉就没有麻烦。
最后,设置360代理服务器,在右上角有个三杠的标记,点开菜单,找到代理服务器选项,然后勾选127.0.0.1:8080
到这里基本上burp suite就已经设置好了,我们回到题目,打开题目链接,然后到burp suite中查看Target目录下的Sitemap,发现了我们的题目网址,左栏为服务器名,右栏为服务器反应的网站
下一步,右键右栏的网址,选择Spider from here,默认两个yes,然后我们看到左上角的变化
表示spider正在运行,也就是爬虫
下一步,我们展开服务器目录
越往上是越内层的链接,我们直接看404.htm,右击Send to repeater,repeater就是中继器,也称为转发器,用来完成发送请求和接受响应
同样可以看到上方菜单的反应,然后我们点进repeater查看
当你没有发送请求的时候是这样的
当你点“GO”之后,就能看到右边的Response的变化
到这儿就很显然了。
第六题:AAencode
毫无头绪,去找别人的write up,知道了怎么做
复制网页的文本,然后按F12打开控制台,在console里粘贴文本,然后回车
弹窗里就有flag,get it!
(虽然不明所以,而且没有同类型的题目作参考,但是可以参考学习一下Unicode,附一个链接https://www.jianshu.com/p/201aa3458a97)
第七题:单身二十年
把能点的链接都点一遍,能看的源码都看一遍,没有有效的信息,然后考虑抓包
这题我倾向于用fiddler,因为fiddler的界面我觉得非常友好,很简单,学起来也很简单,需要注意的是fiddler内置了协议,所以不用专门去设置,官网上下了安装包,一路默认就行。
打开360浏览器,然后设置代理服务器为IE代理(如果不设置的话是抓不到包的,貌似fiddler用的就是IE代理端口)
然后打开fiddler,重新打开题目链接,可以看到fiddler的变化
左栏是网站,右栏是操作,我大致介绍一下右栏
Inspectors是常用的,就是监管者,显示这个网页的一些信息,上半部分是请求端,下半部分是响应端
我们查看raw参数,并没有发现什么
然后回到题目链接,点唯一的一个链接
我们再回到fiddler,发现多了两个包
我们看search_key.php,然后随便看看参数,当我们点到Response——Raw的时候,看到如下
注意到那行淡黄色的提示,表示响应端被加密了,点击提示,自动解码,一眼就看到了flag
Get it!
第八题:php decode
题目给出了一段代码
先读一下,大致确定就是一个解码的函数,如果要输出结果,应该是echo,而不是eval
改一下,然后放到菜鸟工具之在线php编辑器里运行一下,结果就出来了
Get it!
第九题:文件包含
然后操作就是在题目链接后面加上?file=php://filter/read=convert.base64-encode/resource=index.php
如图
然后出来一长串的字符,按照base64解密,此时可以利用fiddler自带的解码器
如图,Text Wizard就是fiddler自带的解码器,点开,然后刚才复制的字符串自动粘贴
一眼就看到了flag,get it!
第十题:单身一百年也没用
这题有两种方法,首先看到题目,想到前面有道题名字差不多,那么考察的东西也应该差不多
第一种,fiddler。获取到名为“······/web9/index.php”的包后,我们看一下原始参数,并没有发现什么有用的信息,那么尝试一下向服务器发出请求。此时,我们需要用到composer板块
属性改为POST,表示发出请求,地址改成抓取到的包的地址,下面申请主体随便写,因为这只是尝试,然后点右上角的execute
看到右方历史纪录里出现了一条新的记录,并且在左端网站栏看到如下
新的数据包,很相似
我们点开新的“······web9/index.php”,再查看参数,会发现在响应端Raw参数里出现了flag,get it!
第二种方法呢,是BurpSuite。抓到包后,我们右键同样的网址,选择Send to Repeater
然后Go以下,发现响应端直接就出来了
相较而言,这题用Burp Suite更为方便。
第十一题:Download~!
题目炸了
第十二题:COOKIE
这题在cookie上动了手脚,在抓包之后,还是送到repeater,注意到
这里Login参数被设为了0,一般来说就是False的意思,那么我们改一下,改成1,然后Go
如果用fiddler也是可以做到的,拦截后右击网站——Replay——Reissue and Edit,然后看到界面变成这个样子了
然后双击Cookie,出来一个小弹窗
修改Login的值为1,然后点Save,再点下面绿色的Run to Completion
类似的,查看Raw参数,自动解码,出现了flag
Get it!
第十三题:MYSQL
点开题目链接后发现两行文字
第二行链接点过去发现是真的百度百科,那么问题应该在第一行,提示了名为“robots.txt”的文件,猜测服务器中有这么个文件,访问一下(这个居然是我自己看出来的0.0),果然有这个文件
读一下这段php代码,注意到TIP提示这段代码应该是名为“sql.php”的脚本代码,功能应该是让你输入一个id,在intval函数处理后值为1024,查表,发现intval函数是取整函数,前提条件是变量应为小数,也就是说id=1024.xxx都可以
Get it!
第十四题:GBK Injection
不会,也看不懂,sqlmap对这题无效,等我学会了再回来写
第十五题:/x00
题目链接给出了一段代码
读下来的意思是让你输入一个nctf,满足条件是必须是数字,而且nctf里必须有字符串“#biubiubiu”,有没有感到很奇怪?
此时要知道ereg函数存在截断漏洞,可以利用正则表达式“%00”隐去想要隐去的内容
具体操作为在链接后加上“······?nctf=123%00%23biubiubiu”,其中%23是“#”的url编码
还有一种方法是数组绕过,“······?nctf[]=#biubiubiu”,虽然我也不知道为啥可以,而且我一开始也是这么做的,然后莫名其妙过了。。。
第十六题:bypass again
一看题目给的代码
这不还是php弱类型嘛,就加上“······?a=s878926199a&b=QNKCDZO”就过了(童叟无欺,自己做出来的)
然后还有一个方法是数组绕过,“······?a[]=1&b[]=2”只要两个数字不一样就行,虽然我还是不知道为什么,而且我并没有想到能这么做,这是某大佬给出的解法
我回来啦!并且知道了为什么可以数组绕过:md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
第十七题:变量覆盖
点开题目链接,先乱点一通大致搜索一下,发现有一个名为“source.php”的文件,打开看到有这么一段php代码
读一下,意思应该是以POST模式获取数据,只要传过去两个变量pass和thepassword_123的值就行
用fiddler做如下
注意第三行代码
还有一种方法是用火狐浏览器自带的hactbar插件,但是因为我用的是360,没有相似的插件,我就不演示了