又一个PHP的奇怪特性—[.空格
转载自博客:https://www.yourhome.ren/index.php/sec/378.html
从安恒周练的一道题目中又学到了PHP的两种特性,详细如下:
题目很简洁,给出源码进行审计
<?php highlight_file(__FILE__); ini_set("display_error", false); error_reporting(0); $str = isset($_GET["A_A"])?$_GET["A_A"] : "A_A"; echo $str; echo "<br>"; echo $_SERVER["QUERY_STRING"]; echo "<br>"; if (strpos($_SERVER["QUERY_STRING"], "A_A") !== false) { echo "A_A,have fun"; } elseif ($str<9999999999) { echo "A_A,too smal l"; } elseif ((string)$str>0) { echo "A_A,too big"; } else { echo "you got it!"; } ?>
这里需要A_A传参,但是矛盾的是,又不能用A_A的参数名,于是引出了一个奇怪特性
当传入A.A、A[A或者A A时,PHP的$GET函数会自动将[.和空格转为
细节可以见此2014年在wooyun上的一篇文章:
https://wooyun.shuimugan.com/bug/view?bug_no=64792
这个特性之后,是PHP数组和数字以及字符串与数字之间的比较:
数组大于任意的数字,字符串中如果没有数字,则==0
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
password_hash密码加密与验证[PHP技术分享]
<?php // password_hash密码加密与验证[PHP技术分享] header("Content-Type:text/html;charset=utf-8"); /** * 正确的密码是secret-password * $passwordHash 是hash 后存储的密码 * password_verify()用于将用户输入的密码和数据库存储的密码比对。成功返回true,否则false */ // 盐值 $options = [ 'cost' => 6, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM), ]; // 加密 $passwordHash = password_hash('secret-password', PASSWORD_DEFAULT, $options); echo $passwordHash.'<br>'; // 验证密码 if (password_verify('secret-password', $passwordHash)) { echo '正确密码'...
- 下一篇
Tomcat学习笔记----本地部署servlet动态资源
前言: 链接:Tomcat学习笔记--简单了解和Web应用的目录结构以及常见的Web应用时出现404错误 有问题:什么是动态资源? 静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源 动态资源:当用户多次访问这个资源,资源的源代码可能会发生改变。 Servlet : 用java语言来编写动态资源的开发技术。 Servlet特点: 1)普通的java类,继承HttpServlet类,覆盖doGet方法 2)Servlet类只能交给tomcat服务器运行(开发者自己不能运行) 所以要配置web.xml具体下面会讲 静态访问URL举例:http://localhost:8080/xx/zz.html动态访问URL举例:http://localhost:8080/xx/One区别看到没 动态结尾没有后缀名,这个下面会解释的。 进入正题: 第一步:创建一个servlet 为了 了解Tomcat部署的流程,我是照着例子手动敲了一个servlet例子。 编写一个servlet程序,继承HttpServlet 但是继承HttpServlet需要一个jar包:servlet-api.jar...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路