php is_numeric bypass

上次360的ctf出现了is_numeric这个函数的绕过。上网查了下都是绕过后执行sql的。现在比赛比完了就记录下这个函数。


php代码:

<?php

$num = $_GET['num'];

if(is_numeric($num)){
	echo "Fuck it!";
}else{
	if($num == 8){
		echo "You got it!";
	}
	echo $num;
}

?>


bypass方法:

test.php?num=8 在 8 后面加任何除数字之外的字母或者符号即可绕过。比如 test.php?num=8a,甚至test.php?num=8%20,加一个空格就可以绕过。所以360播报中的writeup就可以补充下。

下图为360播报中的writeup:

blob.png


实际测试中是这样的:

blob.png

我还可以这样

blob.png


注意一点,0.71e1 这样的话就会被判断为数字。e也是个运算符,代表0.71*10^1。


本文由Hack Blog原创,如需转载注明原文链接

作者:落 分类:日常笔记 浏览:7348 评论:0
留言列表
发表评论
来宾的头像