攻防世界之web新手题

通过自己自学了一个月的web理论知识,并对web的基本漏洞有了初步了解后,我便开始了攻防世界的刷题之旅。为了学长的任务总结知识我便写了这篇wp其中也借鉴了网上一些大佬的思路。那我们废话不多说直接进入正题。

第一题view_source
刚入CTF web 方向肯定有遇事不决,源代码的习惯,但第一题上来就发现鼠标右键不能使用,最简单的查看源代码方式被禁用了。但不慌,我们还有另一个神器,开发者工具栏,在网页上点击F12,调出即可查看源代码,flag便藏在其中。
在这里插入图片描述

这一题考察了我们查看源代码的方式,只要有两种解决方式就可以解决出来这道题。在此我查阅资料对查询源代码的方式进行一下总结。
1.最简单的点击鼠标右键即可查询。
2.用F12打开开发者工具栏进行查看。
3.用PHP脚本进行查询。
4可以通过JS代码进行查看。

第二题robots
在这里插入图片描述题目描述很显然,就是Robots协议,但我刚开始 并不了解,人人笑小宁人人是小宁 ,基础知识太多了,又现找的资料复习。所以Robots协议是什么意思呢.百度百科的链接我放在这robots协议有兴趣可以自己看一下,用通俗的话解释就是robots.txt给爬虫规定了爬取范围,相当于约束爬虫的规定。既然题目提醒是robots协议,那么我们打开网站下的robots.txt去看看里面都有什么
在这里插入图片描述
发现其中就有flag的文件。PHP文件的名称的已经知道了,我们便可以不用爬虫直接在网站上打开文件。
在这里插入图片描述得出flage。本题实则考察对于Robort协议的理解,非常基础的一道题。

第三题backup
在这里插入图片描述我刚开始看到题目要求的时候有点懵,找备份文件,怎么找。。。
可当我打开真正的网址时,题主就把答案狠狠拍在我的脸上,不愧是基础题。

在这里插入图片描述
indx的备份文件直接用indx被备份文件的后缀一个一个试验就行。常用的备份文件的后缀有 .gif .svn .swp .~ .bak .bash_hidtory .bkf 之后在URL后加上这几个后缀一个个试验发现.bak存在。
在这里插入图片描述这里是我进行了重复试验出现了三个文件。
打开记事本便得到了Flag

在这里插入图片描述
本题就是考察对于备份文件的掌握情况,题目简单。

第四题cookie
在这里插入图片描述
又一道把答案写在脸上的题,直接进入网页打开开发者工具栏找到网页的cookie.
在这里插入图片描述看到提示再打开这个PHP文件
在这里插入图片描述看到http的响应头里有flag。
但我们不应该局限于把题目写出来,其中cookie的作用以及如何利用cookie去做一些事情我们应该去了解。cookie实则就是一个用户凭证,服务器通过此去判断用户的身份,但当黑客利用我们的cookie去伪装自己时也会对我们带来困扰。最典型的漏洞是CSRF漏洞。CSRF漏洞详情有兴趣可以了解一下。

第五题disabled_button

在这里插入图片描述题目页面是这样的,题干已经给了我们提示disable属性禁用,我们猜测在form中有一部分元素的使用被禁用了。那么是不是我们所猜测的样子呢,进入题目来看一下
在这里插入图片描述
看到这我们打开页面的源代码查看
在这里插入图片描述在19行我们发现有disable的存在,我们将它删去可得
在这里插入图片描述发现其可以点击了,当我们点击的时候便得出想要的flage.
在这里插入图片描述
所以本题的考察意在让我们明白HTML的各个标签元素的作用,重在基础。

第六题 weak_auth
在这里插入图片描述

题目给了很明显的提示弱密码问题,在这道题目我们需要使用浏览器以外的工具,学长给我极力推荐功能强大。

我们首先对网页的登录进行一个简单的试验
在这里插入图片描述

当我们随便设置一个密码登陆时在这里插入图片描述
发现提醒用户名为admin,那么剩下的就交给工具了。不过要记得一点关于破解的字典的选择尤为重要,我在写这一题的时候因为字典的选择错误,测试几万个样例,还是没有找到答案。往事不堪回首。经过我们的不断尝试终于得出了密码123456
在这里插入图片描述
最终得到了flag.
这道题其实就是考察工具的使用情况,如果不会使用工具。。。一个小时自学起步,别问我怎么知道的,问就是白给。

第六题 simple_php
在这里插入图片描述这里的题目大概意思是C语言是最好的语言小红写了一个PHP代码然后让我们解题点进去页面我们发现在这里插入图片描述我是谁我在哪发生了什么。为什么a0 a不是常数,b>1234b也不是数字??所以万能的百度就出来了,这就涉及到PHP的基本语法了根据PHP的基本语法手册当一个字符串当作一个数值来取值,其结果和类型如下:如果该字符串没有包含’.’,’e’,’E’并且其数值值在整形的范围之内,该字符串被当作int来取值,其他所有情况下都被作为float来取值,该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0如:“0e11”"0e22"比较的时候,会将这类字符串识别为科学技术法的数字,所以0的多少次方都是零。“A”==0比较的时候,会将A转化成数值,强制转化,由于A是字符串,转化的结果是0自然和0相等。“1A”==1比较的时候会将1A转化成为数值1;但“A1“==1结果却为false,也就是"A1"转化成了0。
所以其中a在强制转换的时候就被转换成0但它不是数字,同理1234b,效果也一样。所以在URL后面补充上?a=a&&b=12345a就会得出flag
在这里插入图片描述

这一题涉及到的知识是PHP的弱类型问题,这方面我作为初学者了解并不多
这题我也是参考这位大佬的博客这一题的解法博客链接也给出了了解PHP弱类型的地方详情了解PHP弱类型

第七题get_post

在这里插入图片描述get,post 是发送请求的常见两种方式 所以我们打开题目

在这里插入图片描述
题目简单明了用get发送a=1,所以我们在URL后面加上?a=1发送

在这里插入图片描述所以我们在用post发送b=2,因为我用的是谷歌浏览器post请求只能用postman插件发送,为了弄这个插件我又费了不少功夫在这里插入图片描述打开发送post请求b=2,
在这里插入图片描述得到我们想要的flag.其实本题也没有什么难度,就只是考察get,post的实现。复习一下两种提交表单的方法。

第八题webshell
在这里插入图片描述很明显的的一句话木马的题,做题前先提醒一句这是非常危险的行为,举个例子就是自己把自己家门砸了,千万不要模仿,好了进入正题,实际就是测试我们对菜刀软件的使用。进入题目我们发现
在这里插入图片描述
直接给出了一句话木马的内容好了让我们的主角菜刀出场,
在这里插入图片描述

点击添加即可在这里插入图片描述
进入html中便能看得到flag
在这里插入图片描述

打开即得到flag。

因时间原因,暂时只放出这8道题的解析,其实这8道题都涉及大知识点其中最基础的部分例如第八题webshell的分类有非常多种,这几道题只是让我们对CTF有个简单的了解,我自己的也在做这几道题的时候发现了我自己的知识漏洞,所以我希望看过解析后能自己尝试以求自己有个提高。剩下几题我会发布在下一篇博客上,第一次写还望各位能够指出我的错误。

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
这道是一个 PHP 反序列化的目。 目描述: 提示:这次不会那么简单了,打开源代码看看? 源代码: ``` <?php error_reporting(0); highlight_file(__FILE__); class Show{ public $name; public $age; public function __construct($name,$age){ $this->name = $name; $this->age = $age; } public function __toString(){ return $this->name; } } class Flag{ public $show; public $data; public function __construct(){ $this->show = new Show('flag','0'); $this->data = file_get_contents('/flag'); } public function __destruct(){ if(preg_match('/show|flag|_|\s|\(|\)|{|}|\'|\"/i',$this->show)){ exit('hacker!'); } echo $this->show." is ".$this->data; } } if(isset($_GET['a'])){ $a = unserialize($_GET['a']); if($a instanceof Flag){ echo $a; } } ``` 分析: 首先看到这是一个传入参数进行反序列化的目,传入参数为 $_GET['a'],并且在反序列化后判断其类型是否为 Flag,如果是则输出 $a。 在 Flag 类的构造函数中有一个 $this->data = file_get_contents('/flag'),意味着我们需要获取服务器上的 /flag 文件。 而在 Flag 类的析构函数中,会对 $this->show 变量进行正则匹配,匹配的正则表达式为 /show|flag|_|\s|\(|\)|{|}|\'|\"/i,如果匹配到就会输出 'hacker!'。这里需要注意的是,$this->show 的值是 Show 类的一个实例,而 Show 类中的 __toString() 方法返回的是 $this->name 的值。 因此,我们需要构造一个序列化后的字符串,使得在反序列化后其类型为 Flag,$this->show 的值为一个 Show 类的实例,且该实例的 $name 值满足正则表达式的匹配条件。 解法: 根据目分析,我们需要构造一个序列化后的字符串,使得在反序列化后其类型为 Flag,$this->show 的值为一个 Show 类的实例,且该实例的 $name 值满足正则表达式的匹配条件。 我们可以通过手动构造序列化字符串来实现这个目标。首先构造一个 Show 类的实例,该实例的 $name 值为一个正则表达式的匹配条件,然后将该实例作为 Flag 类的一个属性,最后将 Flag 类序列化即可。 构造序列化字符串的代码如下: ``` <?php class Show{ public $name; public $age; public function __construct($name,$age){ $this->name = $name; $this->age = $age; } public function __toString(){ return $this->name; } } class Flag{ public $show; public $data; public function __construct(){ $this->show = new Show('/show|flag|_|\s|\(|\)|{|}|\'|\"/i','0'); $this->data = file_get_contents('/flag'); } public function __destruct(){ if(preg_match('/show|flag|_|\s|\(|\)|{|}|\'|\"/i',$this->show)){ exit('hacker!'); } echo $this->show." is ".$this->data; } } // 序列化 Flag 类 $flag = new Flag(); $ser = serialize($flag); echo urlencode($ser); ``` 将上述代码保存为文件 unserialize3.php 并上传到服务器上,然后访问 http://your-ip/unserialize3.php,得到序列化后的字符串: ``` O:4:"Flag":2:{s:4:"show";O:4:"Show":2:{s:4:"name";s:23:"/show|flag|_|\s|\(|\)|{|}|'|\i";s:3:"age";s:1:"0";}s:4:"data";s:45:"flag{3c75f8e2-6eb1-4f50-8901-8c3e0ae63a07}";} ``` 最后将序列化后的字符串作为 $_GET['a'] 的值传入即可,访问 http://your-ip/unserialize3.php?a=O%3A4%3A%22Flag%22%3A2%3A%7Bs%3A4%3A%22show%22%3BO%3A4%3A%22Show%22%3A2%3A%7Bs%3A4%3A%22name%22%3Bs%3A23%3A%22%2Fshow%7Cflag%7C_%7C%5Cs%7C%5C(%5C)%7B%7D%7C%27%7C%5C%22%5Ci%22%3Bs%3A3%3A%22age%22%3Bs%3A1%3A%220%22%3B%7Ds%3A4%3A%22data%22%3Bs%3A45%3A%22flag%7B3c75f8e2-6eb1-4f50-8901-8c3e0ae63a07%7D%22%3B%7D,即可得到 flag。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值