news 2026/3/19 19:49:04

PHP特性学习(89-91)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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!}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/12 23:07:23

Mybatis基础使用教程

什么是MyBatis?• MyBatis是⼀款优秀的 持久层 框架&#xff0c;⽤于简化JDBC的开发。• MyBatis本是 Apache的⼀个开源项⽬iBatis&#xff0c;2010年这个项⽬由apache迁移到了google code&#xff0c;并 且改名为MyBatis 。2013年11⽉迁移到Github.• 官⽹&#xff1a;MyBati…

作者头像 李华
网站建设 2026/3/14 6:30:57

弹论:为投资者打造稳定投资之路

在金融投资的世界里&#xff0c;投资者都渴望拥有一条稳定的投资之路&#xff0c;能够在市场的风浪中稳健前行。而弹论以其判断趋势、分区操作和避免频繁换手的优势&#xff0c;为投资者打造了这样一条稳定投资之路。弹论优势的全面阐述弹论是一种基于均线理论的创新交易方法&a…

作者头像 李华
网站建设 2026/3/12 20:25:35

小程序管理后台项目

GET https://cloud1-7g5siu5u6bae09ea.636c-cloud1-7g5siu5u6bae09ea-1333007326.cos.ap-shanghai.myqcloud.com/assets/images/1765853236705_318_%E5%90%8E%E7%AB%AF.png net::ERR_CERT_COMMON_NAME_INVALID各位大佬&#xff0c;使用云服务开发&#xff0c;使用云数据库&…

作者头像 李华
网站建设 2026/3/12 23:07:21

0.5B参数超越大模型:KaLM-Embedding-V2.5重塑轻量级标准

PyTorch-CUDA 基础镜像 v2.5&#xff1a;让开发者专注模型&#xff0c;让环境自己跑起来 你有没有经历过这样的场景&#xff1f;凌晨两点&#xff0c;实验马上要跑通&#xff0c;结果 pip install torch 卡在编译 cuDNN 的环节&#xff1b;或者刚在服务器上配置好环境&#xf…

作者头像 李华
网站建设 2026/3/16 5:32:58

Dify变量注入实现上下文安全传递

Dify变量注入实现上下文安全传递 你有没有遇到过这种情况&#xff1a;销售同事刚上传了一份客户合同&#xff0c;想确认交付周期&#xff0c;结果AI助手却引用了HR部门的薪酬调整通知&#xff1f;或者更糟——某个临时外包人员无意中查到了本不该看到的财务预算表。 这听起来像…

作者头像 李华
网站建设 2026/3/16 23:37:17

零代码基础也能上手!LobeChat一键部署教程(含GPU加速)

零代码基础也能上手&#xff01;LobeChat一键部署教程&#xff08;含GPU加速&#xff09; 在AI助手逐渐成为日常工具的今天&#xff0c;你是否也想过拥有一个完全属于自己的、能离线运行、响应飞快、还不会泄露隐私的智能聊天机器人&#xff1f;不需要买云服务API额度&#xf…

作者头像 李华