cgctf-Web题write up

本人纯小白,去CGCTF虐自己,啥工具也不会,甚至连别人的write up都看不懂,一题百度一万次,磕磕碰碰终于做出了几道题,再回过来看看,发现自己好多题又不会做了。所以还是自己写write up,一来增强记忆,二来回顾一下收获成就感,三来给别的小白很简明的解题思路,最起码不至于看不懂。 以下都是做过之后回过头来的反思(画外音:也就是刚开始都不会做的题)

本人用的是360浏览器。 

第一题:签到题

打开网页链接,右键查看源代码(或者直接Ctrl+U)

得到下图 

cgctf-Web题write up_第1张图片

发现代码中有nctf{flag_admiaanaaaaaaaaaaa},get it! 


第二题:md5 collision

点开题目发现有这么一段代码: 

cgctf-Web题write up_第2张图片

此处搬砖:https://www.cnblogs.com/Mrsm1th/p/6745532.html

大致的意思就是需要你提供一个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

打开题目链接,查看源代码 

cgctf-Web题write up_第3张图片

此处需要对html语言有一定了解,我们看到在input的属性设置里有对maxlength即最长输入长度的限制,而根据他让我们输入的zhimakaimen字符串长度为11,所以如果单纯输入zhimakaimen然后提交,实质上你只输入了zhimakaime,n被忽略了,所以解决方法是修改参数。 

cgctf-Web题write up_第4张图片

按F12打开控制台,找到maxlength,双击,修改为11(或者你也可以设置成更长的),然后再在方框内输入zhimakaimen,submit  

Get it! 


第四题:这题不是WEB

打开题目链接,发现是这么个玩意儿 

cgctf-Web题write up_第5张图片

尝试查看源代码 

cgctf-Web题write up_第6张图片

发现了2.gif 这个文件,好奇心告诉我这玩意儿肯定不对,因为别的地方没有提示了。

好,回到原网页,右击图片另存到桌面,然后打开他,发现还是一张动图……

好像剧情不对,盯着这个2.gif看了半天,怎么让他告诉我flag是啥呢?

我灵机一动,把它拖到了notepad++里,然后就出来这样子的东西 

cgctf-Web题write up_第7张图片

这满屏的乱码我也看不懂啊,然后我就往下翻翻到最底下,刚要关掉,发现最后好像有串不是乱码…… 


cgctf-Web题write up_第8张图片

Get it! 

cgctf-Web题write up_第9张图片


第五题:层层递进

看这题目的名字就感觉满满的提示,二话不说打开题目链接,发现一个类似于搜索引擎的界面,常规操作查看源码,搜查一番后没有发现什么特殊的信息,除了 


cgctf-Web题write up_第10张图片

最后的两个链接,判断一下第二个链接应该是这个盗版网页的正版,点开来看一下也是,那么猫腻应该在第一个链接里。

点开来,发现和之前的网页差不多,此时想到题目名为“层层递进”,那么道理应该是一样的,不出所料最后出现了一个404.htm,而且打开发现 


cgctf-Web题write up_第11张图片

这么长一段文字,那么这应该是我们的最终目标,再查看源码 


cgctf-Web题write up_第12张图片

看到整整齐齐的格式设置,然后竖着看,找到了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然后一路默认点下去,先配置环境 


cgctf-Web题write up_第13张图片

如图,这是代理服务器设置,我们点下面的Import/export CA certificate    

cgctf-Web题write up_第14张图片

出现了这么个框,然后点选第一个,Next

cgctf-Web题write up_第15张图片

如图,名字随便取,但是后缀名要写成.crt,这是证书格式

然后回到桌面,会看到这个文件,打开360浏览器,选项——高级设置——HTTPS/SSL——管理证书——受信任的根证书颁发机构——导入——选择你刚才导出的证书——一路默认到如下图,导入成功后可以看到该目录下多了一个名为“PortSwigger CA”的证书,然后就可以用Burp Suite抓包了。

cgctf-Web题write up_第16张图片
cgctf-Web题write up_第17张图片

下一步,依然是选项——高级设置——网络——代理服务器设置——在代理服务器列表中加入“127.0.0.1:8080”,这是burpsuite默认的代理服务器,端口为8080

cgctf-Web题write up_第18张图片

回到burp suite,proxy——options,在刚才导入证书的地方的下面,有这么一个选择框,把前面的都点上,否则你可以试一下,每次你尝试打开网页,burp suite都会拦截申请,然后等你手动Forward释放掉(如果你前面的intercept is on的话),当然你也可以不点,把intercept关掉就没有麻烦。

最后,设置360代理服务器,在右上角有个三杠的标记,点开菜单,找到代理服务器选项,然后勾选127.0.0.1:8080

到这里基本上burp suite就已经设置好了,我们回到题目,打开题目链接,然后到burp suite中查看Target目录下的Sitemap,发现了我们的题目网址,左栏为服务器名,右栏为服务器反应的网站

cgctf-Web题write up_第19张图片

下一步,右键右栏的网址,选择Spider from here,默认两个yes,然后我们看到左上角的变化

cgctf-Web题write up_第20张图片

表示spider正在运行,也就是爬虫

下一步,我们展开服务器目录

cgctf-Web题write up_第21张图片

越往上是越内层的链接,我们直接看404.htm,右击Send to repeater,repeater就是中继器,也称为转发器,用来完成发送请求和接受响应

cgctf-Web题write up_第22张图片

同样可以看到上方菜单的反应,然后我们点进repeater查看

当你没有发送请求的时候是这样的

cgctf-Web题write up_第23张图片

当你点“GO”之后,就能看到右边的Response的变化

cgctf-Web题write up_第24张图片

到这儿就很显然了。


第六题:AAencode

毫无头绪,去找别人的write up,知道了怎么做

cgctf-Web题write up_第25张图片

复制网页的文本,然后按F12打开控制台,在console里粘贴文本,然后回车 

弹窗里就有flag,get it!

(虽然不明所以,而且没有同类型的题目作参考,但是可以参考学习一下Unicode,附一个链接https://www.jianshu.com/p/201aa3458a97)  

cgctf-Web题write up_第26张图片


第七题:单身二十年

把能点的链接都点一遍,能看的源码都看一遍,没有有效的信息,然后考虑抓包

这题我倾向于用fiddler,因为fiddler的界面我觉得非常友好,很简单,学起来也很简单,需要注意的是fiddler内置了协议,所以不用专门去设置,官网上下了安装包,一路默认就行。

打开360浏览器,然后设置代理服务器为IE代理(如果不设置的话是抓不到包的,貌似fiddler用的就是IE代理端口)

然后打开fiddler,重新打开题目链接,可以看到fiddler的变化

cgctf-Web题write up_第27张图片

左栏是网站,右栏是操作,我大致介绍一下右栏

cgctf-Web题write up_第28张图片

Inspectors是常用的,就是监管者,显示这个网页的一些信息,上半部分是请求端,下半部分是响应端

我们查看raw参数,并没有发现什么

然后回到题目链接,点唯一的一个链接

我们再回到fiddler,发现多了两个包

我们看search_key.php,然后随便看看参数,当我们点到Response——Raw的时候,看到如下

cgctf-Web题write up_第29张图片

注意到那行淡黄色的提示,表示响应端被加密了,点击提示,自动解码,一眼就看到了flag

cgctf-Web题write up_第30张图片

Get it!


第八题:php decode

题目给出了一段代码

cgctf-Web题write up_第31张图片

先读一下,大致确定就是一个解码的函数,如果要输出结果,应该是echo,而不是eval

改一下,然后放到菜鸟工具之在线php编辑器里运行一下,结果就出来了

cgctf-Web题write up_第32张图片

Get it!


第九题:文件包含

此处搬砖:https://www.jianshu.com/p/d0de87ac4ae7

然后操作就是在题目链接后面加上?file=php://filter/read=convert.base64-encode/resource=index.php

如图

然后出来一长串的字符,按照base64解密,此时可以利用fiddler自带的解码器

如图,Text Wizard就是fiddler自带的解码器,点开,然后刚才复制的字符串自动粘贴

cgctf-Web题write up_第33张图片

一眼就看到了flag,get it!


第十题:单身一百年也没用

这题有两种方法,首先看到题目,想到前面有道题名字差不多,那么考察的东西也应该差不多

第一种,fiddler。获取到名为“······/web9/index.php”的包后,我们看一下原始参数,并没有发现什么有用的信息,那么尝试一下向服务器发出请求。此时,我们需要用到composer板块

cgctf-Web题write up_第34张图片

属性改为POST,表示发出请求,地址改成抓取到的包的地址,下面申请主体随便写,因为这只是尝试,然后点右上角的execute

看到右方历史纪录里出现了一条新的记录,并且在左端网站栏看到如下

cgctf-Web题write up_第35张图片

新的数据包,很相似

我们点开新的“······web9/index.php”,再查看参数,会发现在响应端Raw参数里出现了flag,get it!

cgctf-Web题write up_第36张图片

第二种方法呢,是BurpSuite。抓到包后,我们右键同样的网址,选择Send to Repeater

cgctf-Web题write up_第37张图片

然后Go以下,发现响应端直接就出来了

cgctf-Web题write up_第38张图片

相较而言,这题用Burp Suite更为方便。


第十一题:Download~!

题目炸了

cgctf-Web题write up_第39张图片


第十二题:COOKIE

这题在cookie上动了手脚,在抓包之后,还是送到repeater,注意到

cgctf-Web题write up_第40张图片

这里Login参数被设为了0,一般来说就是False的意思,那么我们改一下,改成1,然后Go

cgctf-Web题write up_第41张图片

如果用fiddler也是可以做到的,拦截后右击网站——Replay——Reissue and Edit,然后看到界面变成这个样子了

cgctf-Web题write up_第42张图片

然后双击Cookie,出来一个小弹窗

cgctf-Web题write up_第43张图片

修改Login的值为1,然后点Save,再点下面绿色的Run to Completion

cgctf-Web题write up_第44张图片

类似的,查看Raw参数,自动解码,出现了flag

cgctf-Web题write up_第45张图片

Get it!


第十三题:MYSQL

点开题目链接后发现两行文字

第二行链接点过去发现是真的百度百科,那么问题应该在第一行,提示了名为“robots.txt”的文件,猜测服务器中有这么个文件,访问一下(这个居然是我自己看出来的0.0),果然有这个文件

cgctf-Web题write up_第46张图片

读一下这段php代码,注意到TIP提示这段代码应该是名为“sql.php”的脚本代码,功能应该是让你输入一个id,在intval函数处理后值为1024,查表,发现intval函数是取整函数,前提条件是变量应为小数,也就是说id=1024.xxx都可以

Get it!


第十四题:GBK Injection

不会,也看不懂,sqlmap对这题无效,等我学会了再回来写

cgctf-Web题write up_第47张图片


第十五题:/x00

题目链接给出了一段代码

cgctf-Web题write up_第48张图片

读下来的意思是让你输入一个nctf,满足条件是必须是数字,而且nctf里必须有字符串“#biubiubiu”,有没有感到很奇怪?

此时要知道ereg函数存在截断漏洞,可以利用正则表达式“%00”隐去想要隐去的内容

具体操作为在链接后加上“······?nctf=123%00%23biubiubiu”,其中%23是“#”的url编码

还有一种方法是数组绕过,“······?nctf[]=#biubiubiu”,虽然我也不知道为啥可以,而且我一开始也是这么做的,然后莫名其妙过了。。。

cgctf-Web题write up_第49张图片


第十六题:bypass again

一看题目给的代码

cgctf-Web题write up_第50张图片

这不还是php弱类型嘛,就加上“······?a=s878926199a&b=QNKCDZO”就过了(童叟无欺,自己做出来的)

cgctf-Web题write up_第51张图片
cgctf-Web题write up_第52张图片

然后还有一个方法是数组绕过,“······?a[]=1&b[]=2”只要两个数字不一样就行,虽然我还是不知道为什么,而且我并没有想到能这么做,这是某大佬给出的解法

我回来啦!并且知道了为什么可以数组绕过:md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。

cgctf-Web题write up_第53张图片


第十七题:变量覆盖

点开题目链接,先乱点一通大致搜索一下,发现有一个名为“source.php”的文件,打开看到有这么一段php代码

cgctf-Web题write up_第54张图片

读一下,意思应该是以POST模式获取数据,只要传过去两个变量pass和thepassword_123的值就行

用fiddler做如下

cgctf-Web题write up_第55张图片

注意第三行代码

此处搬砖:https://www.cnblogs.com/xiaoxi-3-/p/7612254.html

还有一种方法是用火狐浏览器自带的hactbar插件,但是因为我用的是360,没有相似的插件,我就不演示了

你可能感兴趣的:(cgctf-Web题write up)