知识大全 php内置函数intval()

Posted 函数

篇首语:没有加倍的勤奋,就既没有才能,也没有天才。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 php内置函数intval()相关的知识,希望对你有一定的参考价值。

一 描述

  intval函数有个特性: 直到遇上数字或正负符号才开始做转换 再遇到非数字或字符串结束时(/ )结束转换 在某些应用程序里由于对intval函数这个特性认识不够 错误的使用导致绕过一些安全判断导致安全漏洞

  二 分析

  PHP_FUNCTION(intval)

  

  zval **num **arg_base;

  int base;

  switch (ZEND_NUM_ARGS())

  case :

  if (zend_get_parameters_ex( &num) == FAILURE)

  WRONG_PARAM_COUNT;

  

  base = ;

  break;

  case :

  if (zend_get_parameters_ex( &num &arg_base) == FAILURE)

  WRONG_PARAM_COUNT;

  

  convert_to_long_ex(arg_base);

  base = Z_LVAL_PP(arg_base);

  break;

  default:

  WRONG_PARAM_COUNT;

  

  RETVAL_ZVAL(*num );

  convert_to_long_base(return_value base);

  

  Zend/zend_operators c >>convert_to_long_base()

  ……

  case IS_STRING:

  strval = Z_STRVAL_P(op);

  Z_LVAL_P(op) = strtol(strval NULL base);

  STR_FREE(strval);

  break;

  当intval函数接受到字符串型参数是调用convert_to_long_base()处理 接下来调用Z_LVAL_P(op) = strtol(strval NULL base);通过strtol函数来处理参数

  函数原型如下

long int strtol(const char *nptr char **endptr int base);

  这个函数会将参数nptr字符串根据参数base来转换成长整型数 参数base范围从 至 或 参数base代表采用的进制方式 如base值为 则采用 进制 若base值为 则采用 进制等

  流程为

  strtol()会扫描参数nptr字符串 跳过前面的空格字符 直到遇上数字或正负符号才开始做转换 再遇到非数字或字符串结束时(/ )结束转换 并将结果返回

  那么当intval用在if等的判断里面 将会导致这个判断实去意义 从而导致安全漏洞

  三 测试代码

  //intval php

  $var= ;

  if (intval($var))

  echo it s safe ;

  echo $var= $var;

  echo

   ;

  $var = union select from admin ;

  if (intval($var ))

  echo it s safe too ;

  echo $var = $var ;

WordPress <= wp trackback php Zend_Hash_Del_Key_Or_Index / sql injection exploit cha138/Article/program/PHP/201311/20990

相关参考

知识大全 ORACLE内置函数大全

ORACLE内置函数大全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL中的单记录函数AS

知识大全 常用ASP内置函数

初学ASP:常用ASP内置函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!函数就是该语言封装了的

知识大全 Oracle内置SQL函数(1)

Oracle内置SQL函数(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  字符函数——返回

知识大全 认识OracleSQL内置函数

认识OracleSQL内置函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL中的单记录函

知识大全 PHP5.4内置Web服务器

PHP5.4内置Web服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP是一种脚本语言

知识大全 将Oracle10g内置的安全特性用于PHP

将Oracle10g内置的安全特性用于PHP  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当今

知识大全 php调用MsSQL存储过程使用内置RETVAL获取过程中的return值

php调用MsSQL存储过程使用内置RETVAL获取过程中的return值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我

知识大全 php技巧:几个比较实用的PHP函数

php技巧:几个比较实用的PHP函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  sys_ge

知识大全 PHP常用函数

PHP常用函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    <?phpfunctio

知识大全 PHP5函数小全

PHP5函数小全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多PHP前辈都写了PHP大全但