攻防世界ctf-web新手引导题前十题wp

最近做逆向题还是有点痛苦,又逐渐回想起当初玩web时候的感觉了。。所以我准备还是逆向和web一起搞,近期先高强度更新一波web再说。

一、robots

这题算是让我学到了robots协议是什么,简单理解就是爬虫协议,搜索引擎访问网站的时候第一个访问的协议,就是在里面标明哪些不可以被爬取,而一般都在根目录下面的robots.txt

如下面这题,提示给了robots协议,然后就进入场景,直接进入robots.txt目录

发现他不让访问这个php文件,看这个格式显然就是flag,然后进入该目录,得到flag

二、backup

这题提示是找备份文件,我就直接去网上搜备份文件的格式,搜到常见的备份文件后缀名有:“.git” 、“.svn”、“ .swp”“.~”、“.bak”、“.bash_history”、“.bkf”,

然后我就挨个在index.php后面加这些后缀试,当试到bak的时候提示下载了一个文件,打开文件发现flag

我发现攻防世界的web题比逆向题好多了啊。。web题每一道题都能学到知识点。

这题就是提示cookie,那之前直接F12控制台的方法肯定就不行了,我就打开burpsuite抓包,第一次抓包如下

提示我看cookie.php文件,直接打开:根据提示发现flag

四、disabled_button

这题我也是百思不得其解,最后百度了一下,给我打开了一扇新世界的大门,F12还可以这样用。具体做法就是进入网页,打开控制台,发现按钮是被一个disabled给限制了,所以就直接把disabled给删了。。再点一下按钮,就成了。很简单

得到flag:cyberpeace{ecdd98d4be9a96b82b45b5cd15bda412}

五、get_post

这题十分简洁明了,进去之后发现如下提示

那就直接burpsuite,发送到repeater,提交如下

然后反馈如上,那就再来一个,并改成post,就会回复flag:

cyberpeace{cade2d4f80d9fb03404ea5776b70c55b}

六、weak_auth

这题就是先进入网址,发现是一个登录页面,先随便输入一下,弹到下面的网页,发现有check.php目录,然后F12,发现提示

根据dictionary,就知道需要密码爆破了,然后用burpsuite爆破就好

关于爆破步骤,第一次用还是有点不太熟练。先随便输入一下用户名和密码,找到request,如下,这样就找到了爆破的位置,发送到intruder,然后这题是已经知道账户名为admin,所以只需要爆破密码就行了

如下,爆破位置在1122处

然后如果已经有字典了的话直接加载字典,用simple list方式爆破,就会爆破出来密码为123456,输入进去得到flag

七、simple_php

这个是一段php代码,很坑,主要涉及字符串转换,经过实测这个php版本应该是8.0之前的。先看代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
echo $flag1;
}
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
}
?>

目的就是要一起输出flag1和flag2,看条件,a需要为0且a的布尔值为1,然后由于是两个=,所以不是强比较,所以可以把a设成abcd,任意字符串就行,php在8.0之前的版本没有弱比较这个概念,会先尝试把abcd转换为数字,发现转换不了就返回0,符合a==0,之后由于任意的字符串布尔值均为true,所以第一个判断可以顺利通过。

第二个判断则需要b不为数字且大于1234,所以可以设成9999ca,什么的,这样php在尝试转换数字的时候会从头尽可能的提取数字,并且9999ca也不是数字,就通过两个测试,获得flag

八、command_execution

这题主要有关的知识点是ping,百度了一下也了解了一些相关的知识。

简单理解一下,ping就是利用ip的唯一性,来检查两个ip地址之间是否连通以及时延多少。

而这题里面说没有waf,则可以直接ping注入。

下面参考文章:本题题解waf

[注入原理]

| 的作用为将前一个命令的结果传递给后一个命令作为输入

&&的作用是前一条命令执行成功时,才执行后一条命令

掌握有关命令执行的知识

windows 或 linux 下:

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

command1 | command2 只执行 command2

command1 & command2 先执行 command2 后执行 command1

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

命令执行漏洞(| || & && 称为 管道符)

然后就可以先查看一下本地路径了

如上左图,发现路径,按照经验找home,如上右图,发现flag,cat一下即可得到

九、xff_referer

这题也是增长知识的一题。主要涉及知识点xff和referer,百度一下

X-Forwarded-For是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段,也就是告诉web网址来访者的ip。

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。简单地说,xff是告诉服务器当前请求者的最终ip的http请求头字段,通常可以直接通过修改http头中的X-Forwarded-For字段来仿造请求的最终ip

也就是说, xff负责说明来源ip,referer负责说明来源网页链接,而且这两个都是可以伪造的,用法就是

1
2
X-Forwarded-For: ip地址
Referer: 来源网址

如图,先按要求伪造ip地址,收到回复需要伪造来源网址,继续伪造即可获得flag

flag如下

十、Training-WWW-Robots

这题说实话是我最早做的web题,当时还不知道robots.txt是啥,就根据英文提示一步一步按照路径就解出来了,很简单。如下

打开网页是让我们学习robots协议,前面也做过这样的题,robots协议就是爬虫规范协议,来阻断一些不规范的爬虫行为,然后直接按路径进入robots.txt,发现不可以访问的路径,直接进入就可获得flag

十一、总结

  • robots协议是爬虫规范协议,有一个robots.txt放在根目录下面,需要的时候应该注意一下这个路径

  • 当跟备份文件有关的时候,要知道备份文件是在原文件名字基础上加入以下后缀:“.git” 、“.svn”、“ .swp”“.~”、“.bak”、“.bash_history”、“.bkf”

  • 有些在前端代码动手脚的,可以直接F12改前端代码,没准有效果

  • $_GET[]获得的是request query里面的变量,就是在url中的变量

说实话这篇文章我写了好久好久,中间因为实习的一些事情断了好久。今天可算是写完了。害

下面,我将进入一段高产期(doge)