| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 安全技术首页 | 技术研究 | 技术应用 | 数据安全 | 企业专区 |
Php注入原理
Php注入原理
作者:佚名 文章来源:互联网 点击数: 更新时间:2008-3-24 10:54:26

Php的环境一般是apache+php+mysql,平常配置服务器一般是打开php.ini里的安全模式,将safe_mode设为on,还有就是将display_erors设为off,即关闭错误显示。还有一个非常重要的配置选项-----magic_quotes_gpc,高版本默认为on,以前的版本中默认为off。当magic_quotes_gpc为on的时候我们怎么防范php的字符变量注入呢?其实只需将提交的变量中的所有单引号、双引号、反斜线和空字告符自动转换为含有反斜线的转义字符。如把“’”变成“\”,把“\”变成“\\”,就ok了。下面我们分为对magic_quotes_gpc=off和magic_quotes_gpc=on的注入清况分析一下。
我们先看一段有漏洞的php代码,这段代码是用来搜索的。

<form method=”post” action=”<? Echo $php_ifo; ? >”>
<input type=”text” name=”search”><br>
<input type=”submit” value=”search”>
</form>
<?php
……
Select * from users where username like ‘%$search%’ order by username
……
?>
从上面代码中我们可以看出,是一个搜索表单,通过post提交数据,并进行select查询,当然要分析这些漏洞我们得先掌握php语言和mysql语法。如果我们从表单中提交%’ order by id#(#号在mysql中表示注释,不执行后面的sql语句),或者用’ order by id#,带入的sql语句就成了select * from user where username like ‘% %’ order by id# order by username 和 select * from users where username like ‘%%’ order by id# order by username。这样数据库的内容会全部返回,列出所有用户名,还有密码等。当然还有update 语句注入攻击、insert语句注入攻击等,最常用的是union语法注入,采用into outfile语句导出php脚本木马
首先要清楚一些mysql语句,如mysql>select load_file(‘c:/boot.ini’)我们可以查看c盘下的boot.ini文件内容,在有注入点的网址后面加入该查询语句就可以显示出黑客们想获得的敏感信息,如查看数据库的连接文件获得数据库帐号,查看ect/password信息等。Select * from table into outfile "C:\\Inetpub\\wwwroot\\shell.php";也就是从表中导出字符串到C:\Inetpub\wwwroot\shell.php中,通常黑客们在得到mysql帐号的情况下,利用create table rose(cmd text);建立一个rose表,字段cmd为text类型,然后用use rose;打开rose表,insert into rose values(" ")加入一句话马到字段里。然后select * from rose into outfile "C:\\Inetpub\\wwwroot\\shell.php";将一句话木马导出为一个shell.php文件,当然这个shell.php中就包含,懂php的都知道这句会造成什么后果,配合提交参数,是可以执行cmd命令和上传php木马的。
当magic_quotes_gpc=on时,提交变量中的所有单引号、双引号、反斜线和空字符会自动转换为含有反斜线的转义字符,字符型的注入可以防范,但数字型没有用到单引号,字符型注入也可以通过char()将参数解释为整数,并返回由这些整数的ASCII码字符组成的一个字符串,也可以用16进制来代替字符。例如:在浏览器里输入http://localhost/www/admin/login.php?username=char(114,111,115,101)%23
上面假设的我们知道的用户名是rose,转换成ASCII后是char(114,111,115,101),%23是#号
表注释。那么sql语句变成:select * from example where username=char(114,111,115,101)# and password=’’,后面的and password=’’被注释掉了,我们顺利进入后台。

 

文章录入:小张    责任编辑:小张 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    将SSH与PHP相连接 确保传
    PHP后门的隐藏技巧
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029 点击这里给我发消息

    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有