关于php注入中的magic_quotes_gpc
magic_quotes_gpc = on
大家都知道php配置文件php.in ,如果里面的magic_quotes_gpc 配置被打开 那就是magic_quotes_gpc = on 懂点php的人都知道。
那我们就要对数值型的字段注入。
<?
if ( isset($_POST["f_login"] ) )
{
//连接数据库
$t_strUid = $_POST["f_uid"];
$t_strPwd = $_POST["f_pwd"];
$t_strSQL = "SELECT * FROM tbl_users WHERE uid=$t_strUid AND password = '$t_strPwd' LIMIT 0,1";
if ( $t_hRes = mysql_query($t_strSQL) )
{
// 成功查询
}
}
?>
<html><head><title>sample test</title></head>
<body>
<form method=post action="">
User ID: <input type="text" name="username" size=30><br>
Password: <input type=text name="userpwd" size=30><br>
<input type="submit" name="user_login" value="登录">
</form>
</body>
上面这个代码是要我们输入username 和password 登入,有些代码省略了。
如果正确输入:
select * from tbltable_users WHERE userid=admin AND password = 'admin' LIMIT 0,1
如果攻击者在username处,输入:admin OR 1 =1 #,则注入的sql语句如下:
SELECT * FROM table_users WHERE userid=admin OR 1 =1 # AND password = 'admin' LIMIT 0,1
下面就可以进行注入了.
在php.ini 中把display_errors 选项设为display_errors = off 这样就可以防止.