首页 > 代码库 > intval()

intval()

intval函数有个特性:"直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(\0)结束转换",

直接来看代码
<?php
$var="20170204";
if (intval($var))
echo "it‘s safe"."<br />";
echo ‘$var=‘.$var;
echo "<br>";
$var1="0 union select www.am0s.com from admin"; 
$var2="4 union select www.am0s.com from admin"; 
if (intval($var1))
echo "$var1<br/>"; 
if (intval($var2)) {
	echo $var2."<br/>";
}
echo intval($var)."<br />";
echo intval($var1)."<br />";
echo intval($var2);
?>
  上面的代码运行后输出
it‘s safe //intval(20170204)为true
$var=20070601
4 union select 1,1,1 from admin //intval(4 union select 1,1,1 from admin)为true
20170204 //intval(20170204) 
0 //intval(0 union select 1,1,1 from admin)
4 //intval(4 union select 1,1,1 from admin)
根据结果可以得出intval()会过滤掉非数字的字符,这点用来进行字符过滤是没问题的,但是如果用intval()进行条件判断的话,就会产生逻辑错误,造成判断条件的绕过。只需第一个字符为非0数字即可使条件为真。  

查看原文:http://www.am0s.com/functions/193.html

intval()