PHPintval()使用不适当的安全漏洞分析功能

PHPintval()使用不适当的安全漏洞分析功能
点评:该intval函数有一个特点:直到正数和负数或符号的情况下开始做转换,以满足一个非数字或字符串在转换结束( 0)

1。描述
的intval函数有一个特点:直到正数和负数或符号的情况下开始做转换,以满足一个非数字或字符串在转换结束( 0)
两。PHP程序设计站分析

复制代码代码如下所示:
php_function(intval)
{
zval * num,** arg_base;
int基地;
开关(zend_num_args()){
案例1:
如果(zend_get_parameters_ex(1,努姆)= =失败){
wrong_param_count;
}
基=10;
打破;
案例2:
如果(zend_get_parameters_ex(2,num,arg_base)= =失败){
WRONG_PARAM_COUNT;
}
convert_to_long_ex(arg_base);
基地= z_lval_pp(arg_base);
打破;
违约:
wrong_param_count;
}
retval_zval(* num,1, 0);
convert_to_long_base(return_value,基地);
}
Zend / zend_operators。C > > convert_to_long_base()
hellip;hellip;
案例is_string:
strval = z_strval_p(OP);
z_lval_p(OP)= strtol(strval,null,基地);
str_free(strval);
打破;

当intval函数接受字符串类型参数,它要求convert_to_long_base(),然后调用z_lval_p(OP)= strtol(strval,null,基地),和工艺参数通过strtol函数。
函数原型如下所示:
长整数strtol(const char* NPTR,char * endptr,int基地);
这个函数将参数字符串根据NPTR参数库长整数,参数库的范围从2到36,或0。参数基表示使用二进制数的方式,例如,基值为10,然后使用10十六进制数字。如果基值为16,则使用16阶等。
这个过程是:
Strtol()会扫描参数NPTR字符串和跳过前面的空间特征,直到数字或正负号改变,然后转换将完成时,非数字或字符串结尾( 0),并将结果返回给。
所以当intval如果等用于判断,它会导致判断是有意义的,这会导致一个安全漏洞。
三。测试代码

复制代码代码如下所示:
/ / intval.php
$ 20070601 ;
如果(intval($变量))
它是安全的;
回声$ =;

var1 =1美元联盟选择1,1,1行政;
如果(intval($ VAR1))
它也很安全;
回声' $ var1 =var1美元;
>

四。实际应用
WordPress wp-trackback.php zend_hash_del_key_or_index SQL注入<= 2 /利用
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部