您当前位置: 首页 » 敏感函数 » is_numeric()

is_numeric()

2017年2月4日 | 发表评论(0) 查看评论

is_numeric()用来判断是否是数字和数字字符串。如果是则返回true,如果不是则返回false。

如果过度的依赖这个函数是很不安全的。

1.如果输入为16进制时,可绕过is_numeric()判断,如果代码中仅用is_numeric()判断后直接写入数据库,并取值时不进行过滤的话可能造成二次注入。

当输入http://www.am0s.com/test/test.php?a=0x31206f7220313d31时,数据库中成功插入值

同样,该值不受单引号限制,可绕过GPC和addslashes限制。

2.空格(%09-%0d)、t、n、r、v、f、+、-能够出现在参数开头,“点”能够在参数任何位置,E、e只能出现在参数中间。

空格、t、n、r、v、f、+、-能够出现在参数开头,“点”能够在参数任何位置,E、e只能出现在参数中间。

该情况在三叶草的ctf中出现过

具体链接:http://www.cnblogs.com/iamstudy/articles/sctf2016_sycshell.html

3.当有两个is_numeric判断并用and连接时,and后面的is_numeric可以绕过

在php手册中曾提到过这个问题

该问题主要是由于php的弱类型问题。

true and false为true

 

 

分类:

敏感函数

| 标签: