preg_match带来的安全问题[%0a可以做什么]
by:剑心[B.C.T]
事情起源于preg_match("/^[0-9]?$/i",'',"$a")这个漏洞,由ste大牛发出来的,是说$在不带/d的情况下会表示在一个字符串结束或者结束附近,譬如php?a=123%0a就可
以通过这个正则表达式但是带入一个%0a,那么很好,漏洞就回到一个%0a能做什么上来了!
黑锅已经总结了一个,在文件扩展后缀里
1.php.jpg不能执行但是
1.php.jpg%0a就可以了(linux环境下)
另外如果在写文件的时候%0a就是一个新行了,对于数据库为文本的就是一个新记录
还有呢?数据库在对待1和1%a的时候是不一样的,1%a被更新到一个int类型的字段可能会导致溢出
在一些协议如http和ftp里%0a可以是一个新的命令的开始
。。。。。。
其他的就看具体的程序了
http://blog.php-security.org/archives/76-Holes-in-most-preg_match-filters.html