chevron-up bell reply instagram twitter2 feed3 finder search-25px-p0
暂无公告

is_numeric()

2017-02-04
内容纲要

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

 

 

admin

发表评论