通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
Php注入原理
责任编辑:酷酷の鱼   更新日期:2008-3-25
 

来源:安全中国

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=’’被注释掉了,我们顺利进入后台。

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 Delphi编程培训班开课了
    普通文章 瑞星公司03月25日发布 每日计算机病毒及木马播报
    普通文章 巧用Windows命令 拒木马于"千里之外"
    推荐文章 推荐:网络时代个人电脑防黑安全准则
    普通文章 防范邮件病毒禁止非法程序暗中发送
    普通文章 SQL元数据注射和解决方案
    普通文章 风险评估应用技术和工具初探
    普通文章 网络嗅探Sniffer原理应用详解
    普通文章 Php注入原理
    普通文章 Belkin Wireless G Router绕过限制 拒绝服务漏洞
    热门文章
    普通文章“线上游戏窃取者变种MKU”病毒技术细节
    普通文章病毒专杀革新 用户定制杀毒软件
    普通文章IT头条:iPhone2.0未发布 黑客称已破解
    普通文章RealPlayer建议用户停止使用IE
    普通文章印度政府可能清除黑莓手机
    普通文章360木马周报:“磁碟机”带病毒特征
    普通文章哈佛大学服务器被黑 个人信息现身BT
    普通文章计算机在中毒后的五大紧急处理措施
    普通文章电脑菜鸟必懂 常见木马连接的原理
    普通文章拔营起寨 插入式木马的清除方法!
    精彩专题