首页 > 编程语言 >谈一谈PHP中关于非法参数名传参问题

谈一谈PHP中关于非法参数名传参问题

时间:2023-06-19 16:06:31浏览次数:52  
标签:谈一谈 下划线 mo 参数 中括号 名传参 PHP php


在CTF中有些时候GETPOST等方法传参中参数名可能存在一些非法字符导致传参问题。下面讲述的也算是CTF比赛中常见的一种Trick

注意:这种Trick只能在PHP版本小于8时有效,当PHP版本大于等于8并不会出现这种转换错误

在PHP官方文档中有解释当变量名中出现空格时,PHP的处理方式

https://www.php.net/manual/zh/language.variables.external.php

谈一谈PHP中关于非法参数名传参问题_下划线


谈一谈PHP中关于非法参数名传参问题_PHP非法参数名传参_02


谈一谈PHP中关于非法参数名传参问题_PHP非法参数名传参_03


这里的参数名为:$_REQUEST['mo chu.']

参数名中含有空格,可以看到当我们传入?mo chu.=xxx时,传入的参数名中点.空格都被替换为了下划线_,这样的参数名确实无法传参

谈一谈PHP中关于非法参数名传参问题_非法字符_04


谈一谈PHP中关于非法参数名传参问题_下划线_05

$var = $_REQUEST['mo_chu.7'];

这里就有条件可以利用一个PHP8被修复的转换错误进行传参:https://github.com/php/php-src/commit//fc4d462e947828fdbeac6020ac8f34704a218834?branch=fc4d462e947828fdbeac6020ac8f34704a218834&diff=unifiedPHP版本小于8时,如果参数中出现中括号[,中括号会被转换成下划线_,但是会出现转换错误导致接下来如果该参数名中还有非法字符并不会继续转换成下划线_,也就是说如果中括号[出现在前面,那么中括号[还是会被转换成下划线_,但是因为出错导致接下来的非法字符并不会被转换成下划线_

Payload如下:

?mo[chu.7=xxx

利用了如果传入的参数名出现了中括号[只替换一次的原理,使得传入的参数为:mo_chu.7

谈一谈PHP中关于非法参数名传参问题_PHP非法参数名传参_06

多做几组测试来验证参数名从左到右如果先出现中括号[会导致之后的非法字符无法替换为下划线_

谈一谈PHP中关于非法参数名传参问题_PHP_07


接下来看看PHP8是否修复了这个转换错误

谈一谈PHP中关于非法参数名传参问题_CTF小技巧_08


谈一谈PHP中关于非法参数名传参问题_CTF小技巧_09


很明显在PHP8中这种转换错误被修复了,传入的参数名中非法字符一律全部转换为了下划线


标签:谈一谈,下划线,mo,参数,中括号,名传参,PHP,php
From: https://blog.51cto.com/u_16159500/6514962

相关文章

  • VsCode配置PHP断点调试环境笔记
    PHPStudy_Pro8.1.1.2VsCode1.51.1PHP7.4.3NTSPHP_Xdebug-2.9.8-7.4-vc15-nts-x86_64首先查看当前环境的phpinfo信息根据phpinfo的信息选择对应的XDebug进行下载:https://xdebug.org/download推荐使用:https://xdebug.org/wizard,将phpinfo的信息全选复制到这里进行分析,然后下......
  • php跨域
    header("Access-Control-Allow-Origin:".$_SERVER['HTTP_ORIGIN']);header('Access-Control-Allow-Credentials:true');header('Access-Control-Max-Age:86400');if($_SERVER['REQUEST_METHOD']=='OPTIONS......
  • php WebUploader 分块上传
    ​ PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间,超过这个时间就会报错3.memory_limit=50M 设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此......
  • 基于PHPPHP高校图形图像智能处理网站
    随着社会的发展,计算机的优势和普及使得实验室平台的开发成为必需。实验室平台主要是借助计算机,通过对实验室所需的信息管理,减少管理人员的繁杂工作,同时也方便广大学生对实验室新闻消息的及时了解。本项目采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的实验室平台的开发......
  • php怎么在线预览word文件?php预览.doc、.docx、.wps文件
    php预览WordPHP要实现在线Word预览只需要3步第一步:准备一个文件地址,如下:http://usdoc.cn/vw/文件模板.docx第二步预览前置地址:http://vw.usdoc.cn/?src=第三步开始预览http://vw.usdoc.cn/?src=http://usdoc.cn/vw/文件模板.docx......
  • 基于PHP电子商务网站系统开发
    随着电子科技的不断进步,购物不再是单一的现实购物形式,电子商务网上购物也成为日常购买商品的一种主要形式。电子商务形式的网上商店具有高效、快捷,信息畅通的特点,还可以很大程度上降低销售成本。 本文着重论述了电子购物网站的实现与设计过程。在系统的设计与开发过程中严格遵......
  • 基于PHP的在线课程管理系统设计实现
    在信息化时代的不断冲击下,在线课程管理与计算机技术的结合,将会是一条提高在线课程管理水平的捷径。使用计算机对在线课程管理的各项基本信息进行管理,比起手工管理来说既方便又简便,而且易于管理、搜索速度快、存储量大等多个优点。将其使用在在线课程管理中,不仅能够提高在线课程管理......
  • php利用X-sendfile控制下载
    为了控制静态文件下载,一般方法需要PHP用file_get_contents读取文件,再传给客户端。节省资源的方法是利用nginx的x-sendfile模块,原理是nginx上设置一个特殊资源目录,客户端无法直接读取,需要经过php许可后才能下载。 1、设置nginxlocation/request/uri/{internal;alias/re......
  • php解决 mysql_connect(): The mysql extension is deprecated and will be removed i
    Themysqlextensionisdeprecatedandwillberemovedinthefuture:usemysq翻译:mysql_connect这个模块将在未来弃用,请你使用mysqli或者PDO来替代。解决方法:打开php.ini配置文件把display_errors=On改为display_errors=Off改完之后重启服务就可以了。  ......
  • PHP环境安装
    passTRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditionalIndonesianSlovakCzechItalianSlovenianDanishJapaneseSpanishD......