sql注入原理:Php注入原理

来源:安全中国

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_o; ? >”>
<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语法注入采用o outfile语句导出php脚本木马
首先要清楚些mysql语句如mysql>select load_file(‘c:/boot.ini’)我们可以查看c盘下boot.ini文件内容在有注入点网址后面加入该查询语句就可以显示出黑客们想获得敏感信息如查看数据库连接文件获得数据库帐号查看ect/password信息等Select * from table o outfile "C:\\Inetpub\\wwwroot\\shell.php";也就是从表中导出串到C:\Inetpub\wwwroot\shell.php中,通常黑客们在得到mysql帐号情况下利用create table rose(cmd text);建立个rose表字段cmd为text类型然后用use rose;打开rose表insert o rose values(" ")加入句话马到字段里然后select * from rose o 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=’’被注释掉了我们顺利进入后台



  • 篇文章: 攻防技术—— 网络防火墙防范溢出策略

  • 篇文章: 网络嗅探Snfer原理应用详解
  • Tags:  php注入工具 php注入 注入原理 sql注入原理

    延伸阅读

    最新评论

    发表评论