文学书籍

对PHP漏洞进行攻击之狗尾续貂-PHP安全-PHP教程-幽默笑话

您现在的位置:文学书籍 > 儿童诗歌时间2019-07-08 08:03 来源:本站

对PHP漏洞进行攻击之狗尾续貂-PHP安全-PHP教程-幽默笑话

文章内容对PHP漏洞进行攻击之狗尾续貂修改时间:[2011/05/1822:56]阅读次数:[756]发表者:[起缘]ShaunClowes的文章ExploitingCommonVulnerabilitiesinPHPApplications的确写的很棒,考虑到了很多方面,我这个文章只是狗尾续貂,补充一些其它没怎么提到的问题。

本文侧重于解决问题,而不是攻击。 1、古老的欺骗SQL语句在默认模式下,即使是你忘了把拷到/usr/local/lib/下,php还是打开magic_quotes_gpc=on。

这样所有从GET/POST/Cookie来的变量的单引号(‘)、双引号(")、反斜杠backslash(\)以及空字元NUL(thenullbyte)都会被加上反斜杠,以使数据库能够正确查询。

但是在php-4-RC2的时候引入了一个配置文件,这个优化的却是magic_quotes_gpc=off的。 某些网管看到optimized字样也许就会把拷到/usr/local/lib/,这时就比较危险。 象比较简单的验证,假设没有过滤必要的字符:select*fromloginwhereuser=‘$HTTP_POST_VARS[user]‘andpass=‘$HTTP_POST_VARS[pass]‘我们就可以在用户框和密码框输入1‘or1=‘1通过验证了。 这是非常古董的方法了,这个语句会替换成这样:select*fromloginwhereuser=‘1‘or1=‘1‘andpass=‘1‘or1=‘1‘因为or1=‘1‘成立,所以通过了。

解决的办法最好就是过滤所有不必要的字符,还有就是推荐对于从GET/POST/Cookie来的并且用在SQL中的变量加一个自定义的函数:functiongpc2sql($str){if(get_magic_quotes_gpc()==1)return$str;elsereturnaddslashes($str);}主要是为了你的程序能安全移植在各种系统里。 2、mail函数的第五个参数在的时候,mail函数引入了第五个参数,用来设置在实际发送邮件的时候增加额外的命令行参数,但是没有很好的检查特殊SHELL命令字符,所以出现执行命令的大问题。

就像手册里的例子:mail("","thesubject",$message,"From:","");这个是存在问题的,如果$SERVER_NAME=;mail/etc/passwd就能把机器的密码发送到我的信箱了。 这里提醒一下,php手册里还有好几个例子存在安全问题的,大家实际使用的时候不要照搬,它只是演示函数的基本功能,理解了就可以了。 对于mail函数的这个问题,最简单的我们就不用这个第五个参数,要使用就过滤非法的字符如(;),还有就是修改php源码包的程序ext/standard/,在if(extra_cmd!=NULL){前增加如下一行:extra_cmd=NULL然后重新编译。 3、UNIX版的require,include函数win版本的require和include函数是不支持HTTP和FTP远程文件包含的,而UNIX版本默认都是支持远程包含文件。 require和include不管你是什么扩展名的,把你包含进来就作为程序的一部分来执行。 我们在写程序的时候为了程序的模块化,以及程序的可移植性,不可避免的用到很多require或include函数,而且有时用变量作为参数,比如:include("$something");如果这时用户能控制$something参数,而这个参数又没有过滤,那就惨拉。

首先可以看任何web用户有读权限的文件,假设这个程序叫,这样我们就可以用如下url:看到/etc/passwd文件。

另外可以利用其远程文件包含的功能执行命令。 比如我在下建立一个文件,内容是:,那么我就可以用如下的url:。

回到顶部