黑客防线,在攻与防的对立统一中寻求突破!2001年创刊的黑客技术专业刊物!

设为首页
收藏本站
联系我们
网站导航


黑客文章 - 脚本漏洞 - 浏览 - PHP网络开发详解 之对非传入变量进行赋值的攻击方法
PHP网络开发详解 之对非传入变量进行赋值的攻击方法
http://www.hacker.com.cn/ 2008-8-27 1:22:28
PHP网络开发详解 之对非传入变量进行赋值的攻击方法
在PHP5中,register_globals参数在默认情况下是被设置成关闭状态的,如下所示。

register_globals = Off

但是,如果将该参数设置成打开状态,可以使PHP程序直接通过变量来获得用户通过表单或地址栏参数传入的信息。例如,访http://localhost/test.php?id=10这个地址,如果参数register_globals设置为On的状态,可以在test.php的PHP代码中通过$id来获取传入的参数值10。这种方法可以为程序的编写带来便利,但却为程序的安全带来了一些隐患。以下代码就存在这方面的漏洞。

<?php

session_start();

if($username == 'aaa' && $password == 'bbb')

                                //如果用户名为aaa密码为bbb则表示通过验证

{

    $auth = 1;

}

if($auth == 1)                                  //如果通过验证则设置Session

{

    $_SESSION["username"] = "aaa";

    die("Logon Successully!");

}

?>

<html>

<head>

<title>Login</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</head>

<body>

<form name="form1" method="post" action="">

  <p>Username:

    <input name="username" type="text" id="username">

</p>

  <p>Password:

    <input name="password" type="password" id="password">

</p>

  <p>

    <input type="submit" value="Submit">

    <input type="reset" value="Reset">

</p>

</form>

</body>

</html>

上面的程序通过获取用户的表单输入来验证用户的身份,但是,由于当前的PHP设置允许用户通过地址栏进行全局变量的赋值,用户可以简单地通过在地址栏传入auth参数来对$auth进行赋值。例如,当前的页面链接http://127.0.0.1/bugs/test1.php,用户可以通过在地址栏访http://127.0.0.1/bugs/test1.php?auth=1来跳过登录页面。这一漏洞可以使普通用户很容易地跳过用户身份验证页面,为数据库乃至服务器带来严重的安全隐患。

所属分类: 脚本漏洞   所属专题:
共有 252 人次浏览 收藏本页 返回上一页
评论作者:
电子邮件:
评论内容:
投票评价:
验 证 码:
图片包含4个随机字符,点击刷新
请输入上面图片中的随机字符