CTF攻防世界web初级区详解

最近几天刚刚接触了ctf,去尝试了一下攻防世界web区的新手篇题目,以下解题过程记录一下自己的学习体会与心得,如果哪里有错可以在评论区告诉我,我及时改正。

1.view_source

CTF攻防世界web初级区详解_第1张图片

1.1获取场景后:

CTF攻防世界web初级区详解_第2张图片

1.2根据题目要求,我们需要查看网页源代码,打开方式一种是鼠标右键打开,一种是按F12键,题目规定无法右键,所以我们按F12打开,如图:

CTF攻防世界web初级区详解_第3张图片

1.3第二种解法:在其他网页打开源代码后把地址换成该网页地址,即view-source:后加上该网页地址,如图:

CTF攻防世界web初级区详解_第4张图片

至此拿到flag,第一题完成

2.robots

题目如下:

CTF攻防世界web初级区详解_第5张图片

2.1获取场景后:

CTF攻防世界web初级区详解_第6张图片

2.2发现什么没有。。。这时候我们去查一下什么叫robots

如图:

CTF攻防世界web初级区详解_第7张图片

2.3可以看出robots协议主要内容就是查看一个站点根目录是否存在robots.txt文件,我们尝试输入:

如图:

CTF攻防世界web初级区详解_第8张图片

2.4发现成功进入后它提示我们flag在f1ag_1s_h3re.php这个文件中,进入后得到flag,如图:

CTF攻防世界web初级区详解_第9张图片

2.5第二种解法:可以用御剑工具来扫描网站后台文件

如图:

CTF攻防世界web初级区详解_第10张图片

2.6输入URL后查询,发现第一个就是关于robots文件,打开操作即可


3.backup

题目如下:

CTF攻防世界web初级区详解_第11张图片

3.1获取场景后:

CTF攻防世界web初级区详解_第12张图片


3.2我们先去网上查查index.php有什么备份文件名,通过度娘知道常见的备份文件后缀名有:“.git”、“.svn”、“.swp”,“.~”、“.bak”、“.bash_history”、“.bkf” 我们尝试在URL后面,依次输入常见的文件备份扩展名。

如图:

CTF攻防世界web初级区详解_第13张图片

3.3发现只有index.php.bak是正确的,用记事本打开,得到flag

3.4第二种解法:仍然使用御剑扫描,如图:

CTF攻防世界web初级区详解_第14张图片

3.5可以直接扫描出来,执行并得到flag


4.cookie

题目如下:

CTF攻防世界web初级区详解_第15张图片

看到就知道很明显要考cookie的知识

4.1获取场景后:

CTF攻防世界web初级区详解_第16张图片

4.2首先,我们先了解一下cookie的概念,Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息,简单来说就是储存在用户本地终端的数据

我们可以按F12查看网页的cookie信息,如图:

CTF攻防世界web初级区详解_第17张图片

4.3我们可以通过网络中查看也可以直接从储存中查看到cookie,cookie中的信息让我们查看cookie.php,我们打开它,如图:

CTF攻防世界web初级区详解_第18张图片


4.4提示我们查看http的头文件,打开头文件后,得到flag,如图:

CTF攻防世界web初级区详解_第19张图片

4.5第二种解法:使用burp抓包实现,如图:

CTF攻防世界web初级区详解_第20张图片


4.6查看到cookie信息为look-here=cookie.php ,再重发器中打开,输入cookie.php,如图:

CTF攻防世界web初级区详解_第21张图片

得到flag,至此第四题完成

5.disabled_button:

题目如下:

CTF攻防世界web初级区详解_第22张图片

5.1获取场景后:

CTF攻防世界web初级区详解_第23张图片


5.2打开后我们发现有关flag的按钮无法点击,这时我们F12看一下该按钮的源代码,如图:

CTF攻防世界web初级区详解_第24张图片

5.3可以看到该按钮不能点击是因为有disabled这个属性,我们直接给他删掉(亲测改成able也可以),毕竟前端的防护形同虚设,这时就可以点击了,拿到flag,如图:

CTF攻防世界web初级区详解_第25张图片

第5题完成

6.weak_auth

题目如下:

CTF攻防世界web初级区详解_第26张图片

6.1获取场景如下:

CTF攻防世界web初级区详解_第27张图片

6.2我们随便输入看一下:

CTF攻防世界web初级区详解_第28张图片

6.3它提示我们登陆账号为admin,我们账号输入admin,密码随机,再看一下结果:

CTF攻防世界web初级区详解_第29张图片

6.4由此,我们想到暴力破解,打开burp,进行暴力破解,如图:

CTF攻防世界web初级区详解_第30张图片


6.5发送给测试器,先清除所有变量,在添加密码为唯一变量,在添加密码字典,进行暴力破解,观察长度不一样的字段,如图:

CTF攻防世界web初级区详解_第31张图片CTF攻防世界web初级区详解_第32张图片


6.6得到密码为123456,输入后得到flag,如图:

CTF攻防世界web初级区详解_第33张图片


至此,第六题完成

7.simple_php

题目如下:

CTF攻防世界web初级区详解_第34张图片

7.1获取场景后:

CTF攻防世界web初级区详解_第35张图片


7.2我们发现是一串PHP代码,简单阅读一下,show_source将该文件语法高亮显示(即用不同的颜色和文字显示关键字来增加可读性),include()即调用config.php这个文件,之后定义了两个变量a,b并规定以Get的形式提交,如果a==0且a为真(即bool返回值为1),输出flag1,然后判断b如果为数字则直接跳出,如果b>1234则输出flag2。我们首先发现,第一a和b的判断条件是冲突的,第二该页面没有让我们输入a和b的地方,我们一个一个来解决,第一个问题涉及到php弱类型比较的问题,解释如下:

掌握php弱类型比较
php中其中两种比较符号:
==:先将字符串类型转化成相同,再比较
===:先判断两种字符串的类型是否相等,再比较
字符串和数字比较使用==时,字符串会先转换为数字类型再比较
var_dump('a' == 0);//true,此时a字符串类型转化成数字,因为a字符串开头中没有找到数字,所以转换为0
var_dump('123a' == 123);//true,这里'123a'会被转换为123

var_dump('a123' == 123);//false,因为php中有这样一个规定:字符串的开始部分决定了它的值,如果该字符串以合法的数字开始,则使用该数字至和它连续的最后一个数字结束,否则其比较时整体值为0。
举例:
var_dump('123a1' == 123);//true
var_dump('1233a' == 123);//flase

所以我们可以将a=0dd,b=123245d,规避掉检测

7.3第二个问题,如何提交,因为该题的变量是以Get方式提交的,所以我们可以直接在URL后添加?a= &b= 提交(如果是post,下面一道例题会讲),如图:

CTF攻防世界web初级区详解_第36张图片

7.4得到flag,至此第六题完成。

8.get_post

题目如下:

CTF攻防世界web初级区详解_第37张图片

8.1看题目可知,本题考查的是http协议中常用的两种请求方法,Get和Post

获取场景如下:

在这里插入图片描述


8.2我们知道以Get方式提交的信息会暴露在URL上,所以我们直接在URL上写上?a=1,如图:

CTF攻防世界web初级区详解_第38张图片


8.3题目提示我们接下来要以Post的形式提交一个b变量,但以Post提交的信息我们无法查看,这时我们就需要借助工具HackBar来完成(HackBar之后的SQL注入也会用到),如图:

在这里插入图片描述

8.4我们按F12打开HackBar先将该网页的URL加载(load)实行,然后点击下面的post data,并在对应的框中输入b=2,实行,如图:

CTF攻防世界web初级区详解_第39张图片


8.5第二种解法,用burp抓包实现,如图:

CTF攻防世界web初级区详解_第40张图片


8.6将数据包转到重发器加工,并在GET后提交?a=1,如图:

CTF攻防世界web初级区详解_第41张图片


8.7这时我们右键选择变更请求方式,将GET改成POST,输入b=2(?a=1不能丢,要加回来),如图:

CTF攻防世界web初级区详解_第42张图片


至此,拿到flag,第八题完成。

9.xff_referer

题目如下:

CTF攻防世界web初级区详解_第43张图片

9.1我们看下题目描述: “X老师告诉小宁其实xff和referer是可以伪造的“ (az,作为一名菜鸟,我当时看是一脸懵逼的。。。),所以我们去度娘查一下什么是xff和referer,如图:

CTF攻防世界web初级区详解_第44张图片

CTF攻防世界web初级区详解_第45张图片


9.2看了之后,我们知道X-Forwarded-For是一个HTTP请求字段,作用是用来识别Web服务器的客户端原始IP的

而referer是HTTP协议中用来告诉服务器该网页是从哪个页面链接过来的;然后,我们进入题目:

CTF攻防世界web初级区详解_第46张图片


9.3这正好和我们刚看的xff有关,我们只要让xff为123.123.123.123即可,我们可以用burp抓包修改它的参数,或在火狐下个插件:CTF攻防世界web初级区详解_第47张图片

9.4如图(以burp展示):

CTF攻防世界web初级区详解_第48张图片


其实也可以用上述提到的HacBar修改,但本人的HacBar过于垃圾,没有这个功能,就先不展示了。。

9.5之后提示我们必须来自https://www.google.com的请求,这正好与referer有关,抓包,修改,如图:

CTF攻防世界web初级区详解_第49张图片


得到flag;

9.6这里有一个小问题,那就是在HTTP添加头字段时要空一格输出,并在输出完成后要回车两次才会生效;

并且这题也可以在HacBar中修改;如图:

CTF攻防世界web初级区详解_第50张图片


至此,第九题完成。

10.webshell

题目如下:

在这里插入图片描述

10.1获取场景如下:

CTF攻防世界web初级区详解_第51张图片


10.2webshell其实就是一句话木马,场景中这个是一个非常经典的一句话木马,我们来分析一下,@的作用是隐藏掉执行该代码的错误,eval则是会将字符串看做PHP语句来执行,信息以POST的形式提交,这在xss漏洞经常使用,当该漏洞成功提交后,我们就可以以POST的方式提交一些PHP代码,从而达到我们窃取信息的目的,比如:

CTF攻防世界web初级区详解_第52张图片


10.3利用ls来查看后台所有的文件,我们看到了flag.txt,用cat将它提取出来,用到了Linux指令,如图:


CTF攻防世界web初级区详解_第53张图片

flag就到手了,可见一句话木马是多么好用(觉醒了什么奇怪的属性 Σ( ° △ °|||)

10.4第二种解法:用到了后台管理工具AntSword(蚁剑),打开蚁剑,右键添加数据,输入网址和密码,测试链接,如图:

CTF攻防世界web初级区详解_第54张图片


10.5链接成功后,添加,打开后看到flag.txt,点开得到flag(图形化管理整的是方便啊 o( ̄▽ ̄)d)

CTF攻防世界web初级区详解_第55张图片


至此,第10题完成。

11.command_execution

11.1题目如下:

CTF攻防世界web初级区详解_第56张图片

11.2 获取场景如下:

CTF攻防世界web初级区详解_第57张图片

11.3 题目提示到没有waf(即防火墙)Ψ( ̄∀ ̄)Ψ

我们先输入127.0.0.1,看一下:

CTF攻防世界web初级区详解_第58张图片

11.4可以发现ping成功了,我们在随便数入一些字母

CTF攻防世界web初级区详解_第59张图片

11.5可以看到随便输入什么他都会提交上去,立马想到这很可能是一个SQL漏洞,

但在注入之前我们先补充一点管道符知识:

windows 或linux 下:

command1 && command2 先执行command1,如果为真,再执行command2

command1 | command2 只执行command2

command1 & command2 先执行command2 后执行command1

command1 || command2 先执行command1,如果为假,再执行command2

( | || & && 称为 管道符)

所以我们可以看到 ,我们要借助ping127.0.0.1的正确性来运行我们自己写的代码

如图:

CTF攻防世界web初级区详解_第60张图片

11.6可见,它返回了index.php,我们的猜想是对的,继续我们打开index.php查找flag

CTF攻防世界web初级区详解_第61张图片

11.7我们没有发现flag,但他一定在这些文件中(在home文件里),如果一个一个查,这样效率太低,我们直接输入

127.0.0.1 | find / -name “*.txt”

第一个就是,如图:

CTF攻防世界web初级区详解_第62张图片

11.8然后输入cat /home/flag.txt,得到flag

CTF攻防世界web初级区详解_第63张图片

至此,第11题完成。

12.simple_js

题目如下:

CTF攻防世界web初级区详解_第64张图片

12.1获取场景后:

CTF攻防世界web初级区详解_第65张图片

12.2我们随便输入,进入页面,发现是一片空白,查看一下源代码;

CTF攻防世界web初级区详解_第66张图片

12.3发现是由JavaScript写的,那么很明显这题考的是我们代码审计,我们用vscode打开,如图:

CTF攻防世界web初级区详解_第67张图片

12.4先把十六进制的数改为十进制:(这里我用的是python,别的也可以)

CTF攻防世界web初级区详解_第68张图片

12.5剩下的部分,因为本人还没有系统学习过JavaScript,只能勉强看懂,无法讲清楚全部的细节,实在抱歉 …((/- -)/

这里推荐另一篇博客,讲得非常清楚---------点我点我-------------

简单来说,其实就是tab[2]会把tab[1]覆盖掉,导致tab[1]完全没用,输出永远是FAUX PASSWORD HAHA,所以我们让该函数的值为tab[1]而不是tab[2],看看会输出什么;


!DOCTYPE html>



结果为786OsErtk12

根据题目的提示,flag为Cyberpeace{786OsErtk12}

以及补充一点:其中好多题都可以用python写脚本做,只是我不会没有展示出来 ( ̄△ ̄;)

至此,web初级题已全部完成。 ( ̄▽ ̄)~■干杯□~( ̄▽ ̄)

你可能感兴趣的:(前端,安全,web安全)