攻防世界warmup(writeup)

引入

$_REQUEST['file'] 是 PHP 中的一个超全局变量,用于获取客户端提交的请求数据。它是一个数组,包含了通过 GET、POST 或 COOKIE 方式提交的变量。

直接使用 $_REQUEST['file'] 存在严重的安全风险,可能导致路径遍历攻击(Directory Traversal Attack)。攻击者可以通过提交特殊字符(如 ../)来访问服务器上的任意文件。

$whitelist 是一个关联数组,用于定义允许访问的文件及其对应的路径。它的作用是限制用户只能访问白名单中指定的文件,从而提高代码的安全性。

mb_strpos 是 PHP 中的一个多字节字符串处理函数,用于查找字符串中某个子字符串的位置。它是 strpos 的多字节安全版本,适用于处理非 ASCII 字符串(如 UTF-8)。

题目

题目:warmup(攻防世界

题号:NO.GFSJ0743

打开题目发现只有一个笑脸,f12查看,源码提示source.php

url中输入source.php找到真正的题目,其中发现其有一个类emmm,其中有一个静态方法,同时需要从提交的请求数据中获取一个file变量,需要不为空、为字符串、能通过checkFile的检测,细看checkFile函数,其中设置了白名单source和hint,看看hint文件

其说明了flag文件的名称为ffffllllaaaagggg

回到checkFile方法

checkFil

checkFile 方法

  • 参数:$page 是用户请求的文件名。
    • 功能:验证 $page 是否在白名单中,或者经过处理后是否在白名单中。

      • 定义了一个白名单数组 $whitelist,只允许 source.phphint.php

      • 检查 $page 是否为空或不是字符串,如果是则拒绝访问。

      • 直接检查 $page 是否在白名单中。

      • 去掉 $page 中的查询参数(从 ? 开始的部分),再次检查是否在白名单中。

      • $page 进行 URL 解码,再去掉查询参数,最后检查是否在白名单中。

因此外面需要对?进行二次url编码构造payload得

?file=source.php%253f/../../../../../ffffllllaaaagggg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值