[PHP安全特性学习]strcmp()函数安全漏洞
简介
PHP函数的安全特性-strcmp() 函数
php-strcmp()函数
PHP strcmp() 函数
strcmp() 函数比较两个字符串。
注释:strcmp() 函数是二进制安全的,且区分大小写。
语法:
strcmp(string1,string2)
string1 必需。规定要比较的第一个字符串。
string2 必需。规定要比较的第二个字符串。
返回值:
- 0 - 如果两个字符串相等
- <0 - 如果 string1 小于 string2
- >0 - 如果 string1 大于 string2
测试代码1:
<?php
echo strcmp("Hello world!","Hello world!").'<br>'; // 两字符串相等 //0
echo strcmp("Hello world!","Hello").'<br>'; // string1 大于 string2 //7
echo strcmp("Hello world!","Hello world! Hello!"); // string1 小于 string2 //-7
?>
结果:
测试代码2:
在PHP5.3之前,传入数据的类型是字符串类型,当传入的类型不是字符串类型 函数就会发生错误,显示报错信息后会return0 所以漏洞就出现在了这里 我们看一个案例
要求get传进来的值要与$password变量里面的值相等因为用了strcmp函数所以他们俩的值相等才会返回0,0==0才能正常输出我们的flag!所以我们可以利用这个函数特性绕过它
<?php
$password="***************";
if(isset($_GET['password'])){
if(strcmp($_GET['password'],$password)==0){
echo "flag{xxxxx-xxx-xxxx}";
}else{
echo "NO password ";
}
} ?>
注意看这里我们构造password为一个数组数组传值为1,而strcmp要求我们传入字符串 strcmp函数判断不是字符串会报错,但是会return0 所以我们的目的达到了得到flag

参考学习:https://www.runoob.com/php/func-string-strcmp.html
https://www.php.net/manual/zh/function.strcmp.php
[PHP安全特性学习]strcmp()函数安全漏洞的更多相关文章
- [PHP安全特性学习]is_numeric()函数安全漏洞
简介 PHP函数的安全特性-is_numerice() 函数 简介 PHP is_numeric() 函数 is_numeric() 函数用于检测变量是否为数字或数字字符串. 语法: bool is_ ...
- php strcmp函数漏洞
strcmp函数漏洞 适用5.3版本以前的php 函数作用:字符串比较 要求传入字符串.如果传入非字符串呢? 结果函数报错!但是函数返回“0” . 虽然报错了但函数的判断却是“相等” 如何传入非字符 ...
- Javascript学习5 - 函数
原文:Javascript学习5 - 函数 在Javascript中,函数和对象是交织在一起的.有些函数的特性与对象相关联.这一点的内容在第六部分会讨论到. 这一部分主要讨论函数与其它比较熟悉的语言( ...
- Java8 新特性学习 Lambda表达式 和 Stream 用法案例
Java8 新特性学习 Lambda表达式 和 Stream 用法案例 学习参考文章: https://www.cnblogs.com/coprince/p/8692972.html 1.使用lamb ...
- java8 新特性学习笔记
Java8新特性 学习笔记 1主要内容 Lambda 表达式 函数式接口 方法引用与构造器引用 Stream API 接口中的默认方法与静态方法 新时间日期 API 其他新特性 2 简洁 速度更快 修 ...
- PWN学习之格式化字符串漏洞
目录 PWN学习之格式化字符串漏洞 格式化输出函数 格式化字符串漏洞 漏洞利用 使程序崩溃 栈数据泄露 任意地址内存泄漏 栈数据覆盖 任意地址内存覆盖 PWN学习之格式化字符串漏洞 格式化输出函数 可 ...
- [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇
目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...
- JavaScript学习09 函数本质及Function对象深入探索
JavaScript学习09 函数本质及Function对象深入探索 在JavaScript中,函数function就是对象. JS中没有方法重载 在JavaScript中,没有方法(函数)重载的概念 ...
- 转:strcmp函数实现及分析
转自:strcmp函数实现及详解 strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:int strcmp(constchar*str1,constcha ...
随机推荐
- jdk、eclipse和idea安装
一.jdk下载与环境配置与IDEA 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213315 ...
- 技术债! 怎样简洁高效的实现多个 Enum 自由转换
一:背景 1. 讲故事 前段时间和同事负责一个项目的两个业务模块,可能大家缺少沟通,导致本该定义一个 Enum 的地方结果我俩各自定义了一个,导致后面这两个 Enum 进行对接就烦了,为了方便理解,也 ...
- 手写webpack核心原理,再也不怕面试官问我webpack原理
手写webpack核心原理 目录 手写webpack核心原理 一.核心打包原理 1.1 打包的主要流程如下 1.2 具体细节 二.基本准备工作 三.获取模块内容 四.分析模块 五.收集依赖 六.ES6 ...
- Luogu P5072 [Ynoi2015]盼君勿忘
题意 给定一个长度为 \(n\) 的序列 \(a\) 和 \(m\) 次询问,第 \(i\) 次询问需要求出 \([l_i,r_i]\) 内所有子序列去重之后的和,对 \(p_i\) 取模. \(\t ...
- elk部署(实操二)
续上篇 https://www.cnblogs.com/wangql/p/13373022.html 安装logstash 下载地址:wget https://artifacts.elastic.c ...
- Java学习的第三十天
1.遇到打印文件使用打印流PrintStream 使用PrintStream写入数据 2.没有问题 3.明天学习用RandomAccessFile随机访问文件
- kube-proxy实现原理
1.service概念 service是一组pod的服务抽象,相当于一组pod的LB,负责将请求分发给对应的pod.service会为这个LB提供一个IP,一般称为cluster IP.kube-pr ...
- codeforces 1442 A. Extreme Subtraction(贪心,构造)
传送门 样例(x): 8 15 16 17 19 27 36 29 33 结果(t1) 15 15 16 18 26 35 28 32 思路:我们可以把最左端和最右端当做两个水龙头,每个水龙头流量的上 ...
- IOCP 模型2 AcceptEx
// IOCP2.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...
- 关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...