CTP WEB 100练(1/100)

考点:PHP代码审计

抓包发现source.php,访问下,出现了php代码

代码主体在这部分,满足三个条件:file不为空&file是字符串&checkFile通过

    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\" />";}  

然后就要读懂这个checkfile()的代码逻辑 ,然后进行绕过:

1、in_array(value,array,type):检查数组中是否存在某个值

value 必需。规定要在数组搜索的值。

array 必需。规定要搜索的数组。

搜索page中是否在whitelist,存在返回true,但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;}

whitelist 表示白名单包含source.php和hint.php,再访问hint.php看看,说flag在ffffllllaaaagggg里面

$whitelist = ["source"=>"source.php","hint"=>"hint.php"];

2、搜索_page中是否在whitelist,存在返回true

_page截取的是page从第0位到?出现的位置

$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}

mb_substr( $str, $start, $length, $encoding ) 截断函数

$str,需要截断的字符串

$start,截断开始处

$length,长度(1就代表一个中文字符)

$encoding,编码,我设为 utf-8

mb_strpos (haystack ,needle )查找字符串needle在字符串haystack中首次出现的位置

3、_page为urldecode后的page,然后截取_page在?前的字符串赋值给_page,最后判断_page是否在whitelist中,是就返回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;

最后构造的payload是/?file=source.php?../../../../../ffffllllaaaagggg,或者source换成hint

以上分析了一通 其实我还是有点懵。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9465.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS Linux的最佳替代方案(一)_Rocky Linux OS 8.6基础安装教程

CentOS Linux的最佳替代方案&#xff08;一&#xff09;_Rocky Linux OS 8.6基础安装教程 一 Rocky Linux介绍和发展历史 Rocky Linux 官网&#xff1a;https://rockylinux.org/ 在CentOS官方宣布停止Centos的维护之后&#xff0c;Centos的创始人Gregory Kurtzer宣布启动新的…

eNSP的使用

目录 配置路由器 DHCP——动态主机配置协议 工作过程&#xff1a; 第一种场景——PC首次获取IP地址的情况 第二种场景——pc&#xff08;客户都&#xff09;再次获取IP地址的情况 DHCP配置&#xff1a; Telnet 搭建好图后 1.看广播域&#xff08;路由器有几个接口就有几…

苹果开发者账号续费流程及苹果开发者账号续费流程及下架处理

已上架的App在AppStore上无法搜索到的问题 在AppStore上搜不到已经上架的应用程序可以采取以下解决办法&#xff1a; 拨打iTunes提供的支持电话&#xff1a;4006-701-855&#xff08;中国时间9:00-17:00&#xff09;。发送邮件给Review团队&#xff0c;在iTunes Connect登录后…

【ARM】-进入和退出异常中断的过程

文章目录 ARM 处理器对异常中断的响应过程从异常中断处理程序中返回 ARM 处理器对异常中断的响应过程 ARM 指令为三级流水线&#xff1a;取地&#xff0c;译码和执行 进入中断的时候 LR PC -4 当出现异常时&#xff0c;ARM 内核自动执行以下操作 将 cpsr 寄存器的值保存到…

vue 访问第三方 跨域, 配置vue.config.js

目录 0 config 文件被修改 一个要重启vscode 配置文件才会生效 1 第一种 (有两种写法) 1.1 配置vue.config.js 1.2 axios 使用 1.3 终端打印 2 第二种方法 --> 错误 --> 没有运行成功 2.1 配置vue.config.js --> 就是api 不被设置成 替换为 / 2.2 axios 使用…

chatGPT如何开启 Browsing 功能,实现即时联网查询?

Openai 为每一个 chatGPT Plus 用户都开放了 Browsing 和 plugins 功能。 前者可以在 ChatGPT 觉得有必要的时候&#xff08;比如你问它今天的新闻&#xff09;&#xff0c;自动联网查询&#xff0c;后者是第三方开发者开发的插件&#xff0c;数量繁多&#xff0c;可以解决各种…

防火墙基本原理详解

概要 防火墙是可信和不可信网络之间的一道屏障&#xff0c;通常用在LAN和WAN之间。它通常放置在转发路径中&#xff0c;目的是让所有数据包都必须由防火墙检查&#xff0c;然后根据策略来决定是丢弃或允许这些数据包通过。例如&#xff1a; 如上图&#xff0c;LAN有一台主机和一…

2023再更新下百度蜘蛛最新UA(User Agent)

其实百度蜘蛛的UA一直没什么变化&#xff0c;有不少朋友以为百度蜘蛛修改特征了&#xff0c;我查了下日志&#xff0c;把最新的UA整理出来给大家。 百度UA信息&#xff1a; Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) 神码ai在了…

github上传文件及其问题解决

文章目录 1. github上上传文件夹2. <filename> does not have a commit checked out3. this exceeds GitHubs file size limit of 100.00 MB4. error: src refspec master does not match any 1. github上上传文件夹 首先在github上create a new repository&#xff0c;…

线程 线程池

大屏展示 10个线程同时查询统计各个表&#xff0c;并行处理&#xff0c; 主线程 把任务投递 给 线程池&#xff0c;线程池中调出一个线程去处理 希望以一种 轻量级的 方式 实现 "i" 线程安全 &#xff1a; compareAndSwap() : 针对某个变量实现 或 -- 确保线程安全 …

使用finalshell连接Linux服务器出现的问题

第一次使用finalshell远程连接Linux服务器的过程、遇到的问题及解决方案 首先建立连接 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d8836dcd8a224bf093ebdac031f763d5.png 然后问题来了 出现以下问题&#xff1a; java.net.ConnectException: Connection refused:…

一桩关于Json序列化引发的惨案(Go系统)

文章目录 前言突然崩了排查问题关于go的json库什么是反射 解决大结构体序列化的性能问题干掉大结构体减少反射使用一些好用的第三方序列化包 自定义序列化 写在最后 前言 一个风和日丽的下午&#xff0c;线上系统突然开始报警&#xff08;系统温馨提示&#xff0c;您的服务接口…