济溪环保公益

 找回密码
 立即注册

微信登录

微信扫一扫,快速登录

搜索
查看: 1142|回复: 0

php后台注入与安全

[复制链接]

35

主题

0

回帖

70

积分

清泉

积分
70
发表于 2011-2-3 04:25:03 | 显示全部楼层 |阅读模式
php以其跨平台的优越性著称。很多网站采用php编写。因为没有像asp那么多的入侵工具,很多人对php的后台并不重视。
我发现很多的get方式登录的后台,但他们大多都不安全。
我们看一个php登陆代码(GET):

$conn=mysql_connect("ip","name","pass");

//连接数据库信息

$query="select uid from admin where adminname='$_get["adminname"]'

"and password ='$_get["password"]'";

//判断get来的是否正确

$result=mysql_query($query);


复制代码

既然是GET,当我们的登录名是nm,密码是pa,php源:
select uid from admin where adminname='nm'

and password ='pa';
复制代码

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

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

再回来看源:
select uid from admin where adminname='nm'

and password ='pa'or'1'='1';
复制代码

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

这是一次我搞的安全活动的内容:
admin_login.php是后台管理入口,页面有两个表单:管理名和密码。
在原始代码中对应的变量分别是$admin_name和$admin_pass,登录验证代码为:

select * from administrator

where adminname = '$_GET[admin_name]' and admin_pass = '$_GET[admin_pass]'
复制代码

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

后来评出来的标准答案:

原始的表单应该有类似下边的代码:

<FORM ACTION=“admin_login.php” METHOD=“get”>

<INPUT TYPE=“text” NAME=“admin_name” VALUE=“”></INPUT>

<INPUT TYPE=“password” NAME=“admin_pass” VALUE=“”></INPUT>

……
复制代码

当输入表单提交以后,浏览器的地址栏就会出现“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语句就变成

select * from administrator

where adminname = 'admin'/*hacking by Juliet!' and admin_pass = 'japanese all are dogs*/''
复制代码

由于"/*"在SQL语法中表示的是注释,结果后边密码比较的部分就被注释掉,实际执行的SQL语句为:

select * from administrator

where adminname = 'admin'
复制代码

结果,只要数据库中的administrator表中存在admin这个用户名就可以直接进入后台了。如果没有这个用户名的话,那么就不能进入后台
您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

小黑屋|手机版|济溪 ( 京ICP备17053947号-1 )

GMT+8, 2025-6-18 01:14 , Processed in 0.025884 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表