K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

php后台安全分析 [转]

1Next >

99163 发表于:10-09-03 14:25 [添加收藏] 楼主 [回复] #Top#
99163 人气:865 积分:1901 金币:6081
KC元老 灌水狂人
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这个用户名就可以直接进入后台了。如果没有这个用户名的话,那么就不能进入后台
xic 发表于:10-09-07 21:49 沙发 [回复] #Top#
xic 人气:53 积分:490 金币:5203
VIP KC元老
貌似现在主机默认对",'都加/了,要射的话需要更深厚的功力了
SinCS 发表于:10-09-07 21:53 板凳 [回复] #Top#
SinCS 人气:1148 积分:28 金币:73433
VIP 管理团队 特殊贡献
用正则对数据做进行严格的验证,在任何语言都能行得通的。
jiaoda015 发表于:11-04-28 17:22 4楼 [回复] #Top#
jiaoda015 人气:15 积分:1 金币:640
沙发  我误解你了
wenjiajia102 发表于:12-10-30 15:23 5楼 [回复] #Top#
wenjiajia102 人气:0 积分:0 金币:50
没看懂,密码丢失怎么弄啊
pktsandy 发表于:12-10-30 18:10 6楼 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
你就是post也不安全呀.安全是多方面的.如果你的服务器有漏洞就是https你也会被攻击
duyonghai 发表于:12-10-31 17:08 7楼 [回复] #Top#
duyonghai 人气:8 积分:25 金币:96
很详细,很给力
jiuai455 发表于:12-11-01 16:46 8楼 [回复] #Top#
jiuai455 人气:0 积分:16 金币:20
想攻击你 直接用流量攻击 怎么都防止不了啊
allyou 发表于:13-03-18 20:26 9楼 [回复] #Top#
allyou 人气:0 积分:5 金币:20
程序的高危漏洞一般怎么修复了?需要等着官方更新吗

1Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号