php 关于intval函数!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 关于intval函数!相关的知识,希望对你有一定的参考价值。

php中intval函数,当首参数为字符串,如下:
intval("12",5);
请问,这第二个参数5起神马作用?
如何做运算的?请教下!

第二个参数是指定第一个参数的进制,比如intval("12",5)就是把“12”当成5进制的数,然后把这个5进制的数转换成10进制整数。

intval("12",5) = 7; (5进制的12=10进制7)
intval("1011",2) = 11; (2进制的1011=10进制11)
参考技术A   intval函数:变量转成整数类型;
  函数语法: int intval(mixed var, int [base]);
  函数返回值: 整数;
  函数种类: PHP 系统功能;
  函数内容:本函数可将变量转成整数类型。可省略的参数 base 是转换的基底,默认值为 10。转换的变量 var 可以为数组或类之外的任何类型变量。
参考技术B 本函数可将变量转成整数类型。可省略的参数 base 是转换的基底,默认值为 10。转换的变量 var 可以为数组或类之外的任何类型变量。

php intval()函数漏洞,is_numeric() 漏洞,绕过回文判断

Intval函数获取变量整数数值
Intval最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval(‘1000000000000’) 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。

这个有个应用就是在判断数值是不是回文上,如果参数为2147483647,那么当它反过来,由于超出了限制,所以依然等于2147483647。即为回文。

is_numeric()  判断变量是否为数字或数字字符串,不仅检查10进制,16进制是可以。

is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断!

该函数还可能造成sql注入,例如将‘1 or 1‘转换为16进制形式,再传参,就可以造成sql注入

intval($req["number"])=intval(strrev($req["number"]))  如果要求不是回文,但又要满足这个条件,可以用科学计数法构造0=0:number=0e-0%00



以上是关于php 关于intval函数!的主要内容,如果未能解决你的问题,请参考以下文章

关于php读取js的变量值问题

php内置函数intval()

php intval函数使用碰到的坑

关于PHP函数

关于ecshop中sql注入漏洞修复

php intval()函数漏洞,is_numeric() 漏洞,绕过回文判断