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

PHP特性学习(89-91)

过晚提交任务原因及解释

前几天甲流了,请了一段时间巨长的假,现在正在追赶进度

重新准备与环境搭建

准备工具:edge浏览器

环境搭建:本地小皮面板

PHP靶场一

<?php include("flag.php"); highlight_file(__FILE__); if (isset($_GET['num'])) { $num = $_GET['num']; if (preg_match("/[0-9]/", $num)) { die("no no no!"); } if (intval($num)) { echo $flag; } }

定义了一个num变量用来传递参数

//因此只需访问这个地址即可取得flag http://localhost/?num[]=a //flag为:flag{You have successfully completed web89!}

PHP靶场二

<?php include("flag.php"); highlight_file(__FILE__); if (isset($_GET['num'])) { $num = $_GET['num']; if ($num === "4476") { die("no no no!"); } if (intval($num, 0) === 4476) { echo $flag; } else { echo intval($num, 0); } }

这个也是必须通过GET方式传入num参数(isset($_GET['num']))

但是num不能与字符串"4476"严格相等(===要求值和类型都完全一致,否则执行die)且intval($num, 0)的结果必须严格等于 4476

所以可以绕过严格比较,方法如下:

  1. 数字后接非数字字符:

    http://localhost/?num=4476a http://localhost/?num=4476%20 http://localhost/?num=4476x http://localhost/?num=4476\n //等等
  2. 其他进制表示法(十六,八)

    http://localhost/?num=0x117C http://localhost/?num=010574 //等等

得到flag:flag{You have successfully completed web90!}

PHP靶场三

<?php show_source(__FILE__); include('flag.php'); $a=$_GET['cmd']; if(preg_match('/^php$/im', $a)){ if(preg_match('/^php$/i', $a)){ echo 'hacker'; } else{ echo $flag; } } else{ echo 'nonononono'; }

代码逻辑

  1. 接收 GET 参数cmd;
  2. 第一个正则匹配:preg_match('/^php$/im', $a),匹配成功则进入内部判断,否则输出nonononono;
  3. 内部第二个正则匹配:preg_match('/^php$/i', $a),匹配成功输出hacker,否则输出flag。

目标如下

需要构造cmd参数,满足:

  • 第一个正则/^php$/im匹配成功(进入内部判断);
  • 第二个正则/^php$/i匹配失败(输出 flag)。

绕过方法

  1. 在php前加换行符

    http://localhost/?cmd=%0aphp
  2. 在php后加换行符+任意字符

    http://localhost/?cmd=php%0ab http://localhost/?cmd=php%0ajj http://localhost/?cmd=php%0asuhs //等等
  3. 加多个换行符

    http://localhost/?cmd=php%0a%0a

得到flag:flag{You have successfully completed web91!}

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

相关文章:

  • v3基于SpringBoot的酒店管理系统
  • Git安装Windows版本并配置清华镜像用于TensorFlow贡献开发
  • Langchain-Chatchat 0.3.1 Windows本地部署指南
  • 私有云ACK:企业智能化转型的安全基座与算力引擎
  • Docker部署Qwen3-14B及GPU加速实战
  • SWIR相机
  • vLLM 0.11.0 发布:全面移除 V0 引擎,性能与多模态支持再升级
  • 从零开始:使用Git安装TensorRT及其依赖组件
  • 模块十八.集合
  • FLUX.1-dev服装生成LoRA模型体验
  • 使用nexus3搭建自己的制品服务器
  • 38、Linux 邮件与网页浏览实用指南
  • 41、互联网服务实用指南
  • LLaMA-Factory微调与模型中断续训实战
  • GitHub项目实践:Fork并定制你的个性化Anything-LLM前端界面
  • pythonstudy Day37
  • Linly-Talker结合RAG技术实现知识增强型虚拟客服系统
  • 用Deepseek-v3.1在Trae中编写AI中继程序
  • LobeChat能否实现思维导图输出?结构化内容展示尝试
  • 开源5G基站硬件参数
  • C#开发桌面应用调用GPT-SoVITS REST API实战
  • Dify Docker部署与使用全指南
  • 数组作为参数
  • 蜜罐技术-德迅猎鹰
  • Daily Report — Day 9 (Beta)
  • Seed-Coder-8B-Base与SonarQube智能集成路径
  • 基于CentOS7 DM8单机部署配置记录-20251216
  • 大模型入门:预训练、微调和蒸馏,一篇文章全掌握
  • LobeChat能否编写教案?教师备课自动化尝试
  • vLLM-Omni:全模态AI推理框架技术解析