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

polarctf靶场web中等/代码审计1,随机值,你知道sys还能这样玩吗

1.代码审计1

芝士点:1.原生类读取,形式:大部分是new $a($b)

2.伪协议的利用读全代码

<?php highlight_file(__FILE__); include('flag.php'); $sys = $_GET['sys']; if (preg_match("|flag|", $xsx)) { die("flag is no here!"); } else { $xsx = $_GET['xsx']; echo new $sys($xsx); } >

这个php代码if语句第一部分不会成立,因为xsx还没赋值,所以没有过滤,如果有过滤,,我觉得通配符也可以绕过

一开始我构建sys=system&xsx=flag.php

不通过,因为system是原生函数,不是原生类,在new后面会报错

搜了 一下,可以利用的 原生类有:

1. SplFileObject

作用:PHP 标准库(SPL)中的文件对象类,用于逐行读取、操作文件,是处理文件的核心原生类。

2.File类(部分环境支持,依赖PECL File扩展)

作用:文件操作类,功能和SplFileObject类似,但并非所有 PHP 环境都内置(需要安装 PECL File 扩展)。等

当用文件目录遍历到了敏感文件时,可以用SplFileObject类,同样通过echo触发SplFileObject中的__toString()方法。(该类不支持通配符,所以必须先获取到完整文件名称才行)

但是我用了原生类也没 出来flag

看了wp:

除此之外其实SplFileObject类,只能读取文件的第一行内容,如果想要全部读取就需要用到foreach函数,但若题目中没有给出foreach函数的话,就要用伪协议读取文件的内容。

伪协议解决问题的原理是:伪协议会一次性读取文件全部内容并处理为单行数据流,让SplFileObject的 “第一行” 等于文件的全部内容

注:这里又跟文件包含那种执行不一样,include本身就是一次性读取全部文件内容,不存在 “只读取第一行” 的问题,伪协议在文件包含漏洞中不是为了 “解决单行限制”,而是为了绕过限制、读取源码或执行代码

转成base64,使代码失去执行能力,变成字符串直接读出来

2.随机值


使用&符号,我觉得相当于指针地址符的用法,$a=&$b,把b的值赋值给a

所以可以获得flag

3.你知道sys还能这样玩吗

可以用御剑扫出来,,也可以根据题目提示sys尝试

<?php show_source(__FILE__); if(isset($_POST['cmd'])){ echo "<pre>"; $cmd = $_POST['cmd']; if (!preg_match('/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|\*|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|vi|vim|file|xxd|base64|date|bash|env|\?|wget/i', $cmd)) { $output = system($cmd); echo $output; } echo "</pre>"; } ?>

l\s执行成功,但是后面不知道怎么绕过了

但是没有对php过滤,可以考虑使用php -r 在终端执行php函数来实现二次命令执行

<?php // 要执行的命令 $command = ''; // 将命令转换为十六进制编码 $hexCommand = bin2hex($command); // 构造 PHP 代码,将十六进制命令解码后传递给 eval 函数执行 $phpCode = 'system(hex2bin("' . $hexCommand .'"));'; // 执行 PHP 代码 echo($phpCode); ?>

依次执行命令,ls ../../../

发现flag.txt,,执行cat ../../../flag,.txt

http://www.cnnetsun.cn/news/143740.html

相关文章:

  • 高端成果与需求端断层如何破局?区域科技创新体系可借助知识产权智能运营平台实现闭环的体系化竞争壁垒。
  • 技术转移机构如何借助生成式AI赋能工具重塑差异化服务优势?
  • 57、SQL 网络与分布式数据库全解析
  • MeshLabelImageColor 读取医学标签图像数据(MetaImage 格式)
  • 61、SQL 中的抽象数据类型与继承机制
  • 69、SQL 的现状与未来:专业数据库与市场趋势洞察
  • 68、专业数据库:低延迟、内存与流处理的应用与发展
  • eRPC数据中心网络高效RPC终极配置指南
  • 零基础玩转Moondream2:智能看图说话神器快速上手指南
  • Hasklig编程字体:用连字技术彻底改变你的代码阅读体验
  • 深度解析 Redisson:不仅仅是 Redis 客户端,更是分布式协作利器
  • Kubernetes可视化管理新体验:告别命令行,拥抱kubeasz Dashboard
  • 实战指南:构建基于Google API的自动化SEO监控系统
  • Recon-ng数据导出终极指南:5分钟掌握情报呈现技巧
  • PostHog容器化部署终极方案:从业务价值到技术实现的高效配置指南
  • Rust Web开发完整教程:realworld-axum-sqlx实战指南
  • Tuya-Local终极指南:如何快速配置本地涂鸦设备实现全屋智能控制
  • 基于SpringBoot的高校科研工作管理系统(源码+lw+部署文档+讲解等)
  • 基于springboot + vue电影院购票管理系统
  • Hasklig字体:为什么它能让你的代码阅读体验提升300%?
  • Neovim LSP配置终极指南:快速搭建现代化开发环境
  • IT-Tools终极指南:Vue 3 + TypeScript打造开发者效率神器
  • Weylus 终极指南:3步将平板变身手绘板
  • WeasyPrint终极指南:从HTML到PDF的完整解决方案
  • 基于java + vue校园外卖系统(源码+数据库+文档)
  • Flutter炫酷UI设计模板教程:打造专业级移动应用界面
  • 计算机毕业设计|基于springboot + vue作业管理系统(源码+数据库+文档)
  • 终极MCP测试指南:7天掌握协议全功能验证
  • 为什么Vkvg是下一代2D图形渲染的颠覆者?
  • 基于VUE的客房订房系统[VUE]-计算机毕业设计源码+LW文档