XCTF攻防世界Web新手入门题WP

攻防世界Web新手入门题(1-6)WP兼学习笔记

第一题:view_source

这一题从题目开始就在进行暗示,view_source意为观看源代码,这就是在明确说要去看网页源代码。

打开网页就是熟悉的flag不在这里,但是flag应该就在source里,所以使用F12进行源码查看,轻松找到了flag: cyberpeace{cc134ff06c517674b100366d6f6e4466}
在这里插入图片描述

考察点

在网页源代码里通过注释的方式隐藏内容

观察和思考

在工作中,确实存在一些程序员为了方便或者提醒自己,会用这种极其不安全的手段来记录某些信息,这将带来严重的安全隐患。在工作生活中编写前端html代码时也要注意在网页发布时,去除开发过程中的注释,以免重要的信息泄露。据我的观察,也会有一些公司故意利用这种特性来进行自我宣传和广告,大多时科技公司,例如百度网页的源代码,近期就是校招的广告。在源代码里做宣传,一般也就是科技公司所为了,除了IT工作者,还有谁会无聊到去看源代码呢。

第二题:get_post

这一题,看到题目就联想到了post类型的请求。打开网页提示我们用get方式传入一个参数a=1,所以直接在url后面添加?a=1即可。之后又提示要我们用post传入一个b=2,所以使用hackbar工具,传入一个post请求类型的b=2,得到我们想要的flag:cyberpeace{2c088170d7c39c5ab26ca88b5af60216}
在这里插入图片描述

考点

考察对http请求中的post类型和get类型请求的理解和应用。

观察与思考

HTTP协议里,对于请求类型的定义远不止于GET和POST类型,但是大多数使用的是这二者。例如还有OPTION(请求一些选项的信息)、HEAD(请求读取由URL所标志的信息的首部)、PUT(在指明的URL下储存一个文档)、DELETE(删除指明的URl所标志的资源)、TRACE(用来进行环回测试的请求报文)、CONNECT(用于代理服务器)。但这些请求方式相比本题中的两种风险更大,因为有的涉及到了资源的删除和储存文件。但是GET和POST类型依旧会存在一些风险,这就需要在编写后端代码的时候注意进行过滤,防止黑客而已传入参数。

第三题:robots

这题题目和提示都很明显的指向了robots协议,所以在url的结尾加上robots.txt,打开查看txt。

在这里插入图片描述

所以可以得到第一提示,它不允许所有的搜索引擎爬过,不被允许的内容是一个flag_1s_h3re.php的网页文件。

所以直接去访问这个网页。

在这里插入图片描述
得到了flag: cyberpeace{8a3929d4ffec81ab98efaec47c1fbe66}

考察点

robots协议的相关知识

观察和思考

这题涉及到了robots协议。 robots是网站跟爬虫间的协议,用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。 所通过在这个txt文档里添加相关的一些内容来禁止搜索引擎爬取相关的网页和路径。这样搜索引擎就只会爬取未经限制的网页。

每当用户试图访问某个不存在的URL时,服务器都会在日志中记录404错误(无法找到文件)。每当搜索蜘蛛来寻找并不存在的robots.txt文件时,服务器也将在日志中记录一条404错误,所以你应该做网站中添加一个robots.txt。 如果你在robots.txt里面设置了禁止所有搜索引擎爬取,那么就会导致你的网页无法被搜索引擎收录。那就再学习一下robots.txt文件的格式

User-agent:该项的值用于描述搜索引擎robot的名字,如果是*表示的是所有的搜索引擎

Disallow:该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow开头的URL均不会被robot访问到。

Allow:该项的值用于描述希望被访问的一组URL,与Disallow项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以Allow项的值开头的URL是允许robot访问的。

我们常用的搜索引擎类型有:

google蜘蛛:googlebot

百度蜘蛛:baiduspider

yahoo蜘蛛:slurp

alexa蜘蛛:ia_archiver

msn蜘蛛:msnbot

有一些题目也会把flag藏在某个隐藏目录下

第四题:backup

根据提示他要我去寻找备份文件,进入网页问我们index.php的备份文件。那么我就再url处输入index.php.bak访问,跳出下载框,我下载文件到本地打开它。

在这里插入图片描述

得到flag:Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}

考察点

考察对网页文件的备份名称了解,后缀为.bak

思考

一些网络管理员再一些目录下,放置了网页备份文件,导致备份文件泄露,这是一种极其不安全的行为,应该要注意这个问题。如果重要的信息被泄露,将会让攻击者有机可乘,造成网站损失。

第五题:cookie

看提示就知道适合cookie相关的内容。打开之后问我知不知道cookie,我下意识的去看来一下cookie
在这里插入图片描述

看到了一个提示cookie.php所以我就访问了cookie.php

根据网页的提示我看了http的请求头

在这里插入图片描述
得到的flag:cyberpeace{048fe3c6960ca5f28d6eebe61ad8c498}

考察点

cookie相关知识,这里是查看网页cookie

观察与反思

Cookie指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据 。服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。 所以cookie使用被攻击者利用从而导致重要的信息泄露。所以要重视对cookie的保护。

第六题:disable_button

从题目是不可用的按钮,以及描述里提到的前端知识。就知道是要修改前端代码来让按钮可以点按。

在这里插入图片描述

果然一个不能按的按钮,查看前端代码

在这里插入图片描述

修改代码把disable改为able即可

在这里插入图片描述
点按button得到一个flag

cyberpeace{0f10ea6ef3068a2eedf94be8d546739a}

考察点

前端代码的理解和修改

观察和思考

对前端的一些修改时可以达到一些绕过前端限制的效果,所以很多时候前端限制的效果不好,反而容易被人破解了,所以应该从后端上来进行限制会比较好。

### PHP `unserialize` 函数的安全漏洞及其攻防技巧 #### 背景介绍 PHP 的 `unserialize()` 函数用于反序列化字符串并将其转换为相应的对象或数组。然而,在某些情况下,如果输入数据未经过严格验证,则可能导致安全问。例如,当恶意用户能够控制传入的数据时,可能触发特定类中的魔术方法(如 `__wakeup()` 或 `__destruct()`),从而执行任意代码。 在实际应用中,开发者通常会忽略对用户提交数据的校验,这使得攻击者有机会通过精心构造的 payload 来利用这些漏洞[^2]。 #### 漏洞原理分析 考虑以下场景:程序允许外部用户提供已序列化的字符串作为参数,并直接调用了 `unserialize()` 方法处理该参数。假设存在如下定义的一个简单类: ```php class Example { public $data; public function __construct($value) { $this->data = $value; } public function __wakeup() { if ($this->data === 'trigger') { system('ls'); // 执行系统命令 } } } ``` 如果攻击者可以提供类似于下面这样的序列化字符串: ```plaintext O:7:"Example":1:{s:4:"data";s:7:"trigger";} ``` 那么一旦被反序列化,就会激活 `__wakeup()` 魔术方法内的逻辑,进而引发潜在危害行为的发生[^3]。 #### 实战案例解析 针对上述提到的情况,这里给出一个具体的实例说明如何防范此类风险。假设有这样一个 URL 请求包含了未经过滤便进入业务流程的部分: ``` ?code=O%3A8%3A"xctf"%3A1%3A%7Bs%3A4%3A"flag"%3Bb%3A1%3B%7D ``` 此时服务器端接收到此请求后如果没有做任何防护措施的话,就极有可能因为调用到了不恰当的对象属性而导致异常退出等问出现。因此我们需要采取一定手段加以规避,比如引入白名单机制或者重写相关敏感操作等等方式来增强系统的安全性。 另外值得注意的是,在一些特殊条件下即使看似无害的操作也可能隐藏着巨大威胁。比如说SQL注入测试过程中经常使用的ORDER BY语句片段组合而成的大数值试探法虽然表面上看不出来有什么明显错误之处,但实际上却反映了数据库结构设计上的不合理性以及查询构建过程缺乏足够的鲁棒性的事实情况;而这种情况同样适用于其他类型的渗透尝试当中去发现更多深层次隐患所在[^4]。 #### 编程实践建议 为了有效防止因不当使用 `unserialize()` 导致的各种安全事故的发生,可以从以下几个方面入手改进现有代码质量水平: - **输入验证**: 对所有来自客户端的数据进行全面细致地检查确认其合法性后再进一步加工运算; - **最小权限原则**: 确保运行环境下的各个组件都只拥有完成各自任务所必需最低限度的权利范围即可满足日常需求而不至于造成不必要的麻烦困扰; - **更新依赖库版本**: 及时跟踪官方发布的补丁信息并将项目组内部正在维护的产品升级到最新稳定状态以减少遭受未知零日漏洞袭击的可能性几率降低至可接受范围内为止。 ```php // 输入验证示例 function safe_unserialize($serialized_data){ if (is_string($serialized_data)) { @ini_set('unserialize_callback_func', '__php_incomplete_class'); try{ return unserialize(trim(stripslashes($serialized_data))); }catch(Exception $e){ error_log("Unserialization failed:".$e->getMessage()); return false ; } }else{ return null ; } } $unsafe_input=$_POST['code']; $safe_output=safe_unserialize($unsafe_input); if(!$safe_output){die('Invalid input detected!');} print_r($safe_output); ``` ### 结论总结 综上所述可以看出,合理运用好编程语言自带的功能特性固然重要,但是更加不可忽视的是围绕它们周边建立起一套完善可靠的防御体系框架才是长久之计。只有这样才能真正意义上做到既提高了工作效率又保障了整体网络空间生态健康持续发展下去的目标追求方向不变偏离轨道之外越走越远直至最终实现理想愿景成果落地开花结果圆满成功结束全文叙述内容部分到这里告一段落谢谢大家耐心阅读完毕以上全部材料资料参考资料链接地址列表如下所示供有兴趣的朋友自行查阅学习参考借鉴吸收转化提升自我综合能力素质修养层次境界高度宽度广度深度厚度等方面均有不同程度的进步成长收获满满值得期待未来无限美好前景光明灿烂辉煌无比壮观壮丽宏伟浩瀚辽阔宽广博大精深奥妙无穷尽矣哉乎也焉耳矣!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值