攻防世界web简单解码题

simplle_js:
在这里插入图片描述

打开题目后:

在这里插入图片描述
在这里插入图片描述
要输入密码,不过不管你输入什么它都会显示你输入错误,因此查看网页源代码:

在这里插入图片描述

在代码中,发现了一串密码(70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65),不过输入之后也是错误的;
题目中还有一串十六进制密码(\x35\x35\x2c\x35\x36\……x2c\x35\x30)用python转换成十进制得到一串密码(猜测应该是flag):

在这里插入图片描述
不过有了这个密码还不能得到flag因为如果有HTML基础的话,可以和容易的发现网页代码的有问题:分析源码,发现随便输入什么都会输出pass="70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65"对应的字符
用python处理一下,得到该字符串为: FAUX PASSWORD HAHA,正好是提示错误的字符串:
在这里插入图片描述
方法一:

把在十六进制换成十进制的密码换成字符串
在这里插入图片描述但是在攻防世界里的flag一般的格式是“Cyberpeace{……}”所以加上就是真正的flag"Cyberpeace{7860sErtk12}"

另一种方法需要修改网页源代码比较难基础不够很有难度,在这里省略……

<think>好的,用户需要关于攻防世界Web新手'unseping'的解思路或教程。首先,我要回忆这个目的具体内容。根据用户提供的引用,目涉及到PHP反序列化漏洞和命令注入,特别是绕过一个__wakeup魔术方法中的WAF黑名单。 首先,目中提到了代码接收参数cft,进行反序列化后赋值给method和args,然后通过exec执行命令。关键点在于__wakeup函数中的WAF过滤了某些危险字符,但用户需要绕过黑名单执行命令。引用[4]提到黑名单容易被绕过,可能需要使用参数逃逸或其他方法。 接下来,我应该分步骤解析解过程。第一步是分析代码结构,确认反序列化的触发点。然后,检查__wakeup中的过滤规则,确定哪些字符被禁止。常见的黑名单可能包括空格、分号、管道符等,但可能存在遗漏。例如,使用${IFS}代替空格,或者使用base64编码绕过。 用户提供的引用中有提到使用exec执行args参数,所以构造一个包含恶意命令的序列化对象是必要的。需要确保在反序列化时,method和args参数被正确赋值,并且绕过WAF的检测。此外,可能需要利用PHP反序列化中的特性,比如对象注入或者魔术方法的触发顺序。 另外,引用[2]和[3]涉及PHP弱类型和HTTP Referer,但当前问可能不需要这些,所以重点放在引用[4]的反序列化和命令注入上。用户可能需要构造特定的payload,例如序列化后的数据,其中args参数使用绕过黑名单的命令,如使用连接符&&或||,或者使用反引号执行命令。 测试过程中可能需要多次尝试不同的绕过技巧,比如用通配符代替特定字符,或者使用编码转换。例如,将命令转换成base64编码,然后通过解码执行。例如,echo bHM= | base64 -d | bash 这样执行ls命令。 最后,确保在解报告中详细说明每一步的思考过程和使用的技术,帮助用户理解如何应对类似的CTF目。同时,生成的相关问应覆盖漏洞分析、绕过技巧和防御方法,以增强学习效果。</think>### 攻防世界Web新手'unseping'解思路 #### 目背景 目主要考察**PHP反序列化漏洞利用**与**命令注入绕过黑名单过滤**的能力。代码核心逻辑是通过接收参数`cft`反序列化后触发`ping`方法执行系统命令,但`__wakeup`函数中存在WAF黑名单过滤[^4]。 --- #### 解步骤 1. **代码逻辑分析** - 接收外部参数`cft`,反序列化为对象后赋值给`method`和`args`。 - 当`method`为`ping`时,调用`exec($args)`执行系统命令。 - **关键漏洞点**:`__wakeup`函数中的WAF仅使用黑名单过滤部分危险字符(如`|`、`;`),但未覆盖所有可能的命令注入方式。 2. **绕过WAF黑名单** - **空格绕过**:使用`${IFS}`或`%09`(Tab的URL编码)替代空格,例如`ls${IFS}/`等价于`ls /`。 - **命令拼接**:利用`||`或`&&`绕过分号过滤,例如`cat flag || ls`。 - **通配符使用**:用`*`匹配文件名,例如`cat fla*`代替`cat flag`。 - **Base64编码**:将命令编码后通过管道执行,例如: ```bash echo "bHM=" | base64 -d | bash # 解码后执行"ls" ``` 3. **构造Payload** - 序列化一个对象,设置`method="ping"`,`args`为绕过黑名单的命令。 - **示例PHP序列化代码**: ```php <?php class Example { public $method = "ping"; public $args = "ls${IFS}/"; } echo serialize(new Example()); ?> ``` 输出:`O:7:"Example":2:{s:6:"method";s:4:"ping";s:4:"args";s:5:"ls${IFS}/";}` 4. **发送Payload** - 将序列化后的字符串作为`cft`参数传递,例如: ``` http://target/?cft=O:7:"Example":2:{s:6:"method";s:4:"ping";s:4:"args";s:5:"ls${IFS}/";} ``` - 若服务器返回目录列表,则继续读取flag文件,例如将`args`改为`cat${IFS}/flag.txt`。 --- #### 关键技巧总结 - **反序列化触发点**:需确保对象属性正确赋值以触发`ping`方法。 - **黑名单绕过**:灵活使用替代符号和编码技术。 - **命令结果获取**:若无回显,可通过DNS外带或延时注入判断。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值