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

ctf show web入门99

打开靶场,通过代码审计我们发现这是一道通过合法的参数绕过条件限制,最终利用 file_put_contents 实现任意文件写入的题目,我们的主要目的就是把一个木马写入该网站,然后拿flag

$allow=array();for($i=36;$i<0x36d;$i++){array_push($allow,rand(1,$i));}

这串代码的意思是重复877-36次每次迭代rand(1, $i) 生成一个 1 到i之间的随机整数arraypush(i 之间的随机整数array_push(i之间的随机整数arraypush(allow, …) 将该随机数追加到 $allow 数组的末尾

数组 $allow 的变化

假设执行前 $allow 未定义(或为空),PHP 会将其自动创建为数组(但会抛出一个 Notice: Undefined variable)。建议先 $allow = [];。 最终 $allow 是一个索引数组,键从 0 到 840,共 841 个元素。

随机数的范围

第 1 轮($i=36):随机范围 [1, 36] 第 2 轮($i=37):范围 [1, 37] ... 最后一轮($i=876):范围 [1, 876] 随着循环进行,随机数的上限逐渐增大,后面生成的数值可能更大(但仍然是均匀分布的整数)

所以1到36包含在这个数组的可能性最大

if(isset($_GET['n'])&&in_array($_GET['n'],$allow)){file_put_contents($_GET['n'],$_POST['content']);}

条件:我们需要传入一个 $_GET[‘n’],并且这个值必须存在于 $allow 数组中。

结果:如果条件满足,程序会创建/写入一个名为 $_GET[‘n’] 的文件,内容为 $_POST[‘content’]。

这道题的破绽在于 PHP 的 弱类型比较。

在 PHP 中,in_array(value, array) 函数默认是弱类型检查(没有设置第三个参数为 true)。当它拿一个字符串去和一个整数进行比较时,PHP 会尝试将字符串转换为数字。

弱类型转换规则:
如果一个字符串以数字开头,PHP 在进行数学比较或类型转换时,会截取开头的数字部分,忽略后面的非数字字符。

例如:

“1.php” 会被转换为整数 1
因为1到36被包含的概率最大所以我们的文件名为1.php
然后我们就可以开始构造payload

我们先创建一个名为“1.php”的文件,并且在文件内写上一个一句话木马执行后我们在打开一个原url+1.php网站,通过psot方式执行命令

这里通过1=system(‘ls’);命令列出当前目录的文件和子文件夹发现有一个flag36d.php
判断flag应该藏在这个文件下,我们尝试读取该文件内容
通过1=system(‘tac flag36d.php’);命令查看该文件下的内容

得到flag为:ctfshow{024752ba-1087-4064-9c44-36f4887f0aa9}

http://www.gsyq.cn/news/1463594.html

相关文章:

  • 086、医疗影像病灶检测:YOLO 在 X 光、CT 切片上的小样本与正负样本不均衡方案
  • AI如何重塑秋冬服装赛道?实现降本增效新突破
  • 深圳配眼镜推荐指南:3 家硬核之选,少花冤枉钱还能 get 专业配镜 - 配眼镜新资讯
  • 终极指南:用开源神器TCC-G15彻底解决Dell G15散热烦恼
  • 085、安防监控行人属性检测:YOLO + 多属性分类 Head 的联合设计
  • 如何3步制作专业LRC歌词:零基础入门完整指南
  • 2026岳阳市权威认证贵金属回收 TOP5+黄金回收白银回收铂金回收门店地址电话推荐
  • 084、自动驾驶行人车辆检测:多类别、多尺度、实时性的三角平衡方案
  • 5分钟终极指南:如何用Deceive实现Riot游戏隐身模式,专注游戏不被干扰
  • 新手零基础入门claude desktop:利用快马平台生成交互式学习项目
  • MySQL5.7 数据库安装、初始化、密码修改、远程连接完整实战
  • 别被KEIL的语法检查骗了!深入理解‘error in include chain’警告与编译器真实行为的差异
  • 别再手动导入了!用BurpSuite CLI和Docker实现自动化测试环境搭建与数据恢复
  • 3分钟掌握终极窗口控制术:免费开源工具让你完全掌控Windows窗口大小
  • 苏州配眼镜推荐:2026五类需求适配方案解析攻略 - 配眼镜新资讯
  • 深度解析开源PDF编辑器PDF4QT:从基础操作到高级功能的完整实战指南
  • Ecdysis-Triggering Hormone (Manduca sexta) (Mas-ETH)
  • 基于matlab建模FOC观测器采用龙贝格观测器+PLL进行无传感器控制附Simulink仿真
  • 终极游戏修改指南:5分钟掌握UE4SS脚本系统的完整教程
  • 10分钟打造专业级AI音色:RVC语音克隆终极指南
  • 终极指南:如何在OBS中免费实现专业级背景移除效果
  • 【AI工具与智能屏蔽整合实战指南】:20年专家亲授5大落地场景与避坑清单
  • Logisim-evolution数字电路设计工具:从入门到精通的完整指南
  • VC6环境下可直接编译运行的USB HID设备通信测试工具包
  • Mac窗口置顶工具Topit:终极指南帮你告别繁琐窗口切换
  • Kimi k2.6 LeetCode 2999. 统计强大整数的数目 C++实现
  • 2026 年字节 AI 多线作战:世界模型、Coding、视频模型、豆包商业化谁能突围?
  • Kimi k2.6 LeetCode 3003. 执行操作后的最大分割数量 Go实现
  • 告别重复造轮子:用快马一键生成gptimage2安卓版高效开发模板
  • AI注销不是删除,而是智能遗忘:解析联邦学习+差分隐私双引擎注销架构(附开源POC代码)