sql注入测试代码

先上测试代码:

<?php
error_reporting(0);
$show_name=$_GET['name'];
var_dump($show_name);
if(!get_magic_quotes_gpc()){
    $show_name = addslashes($show_name);
}
if(!empty($show_name)){
    $db = mysql_connect("127.0.0.1:3306","root","password");
    if(!$db){
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("pdlc");
    mysql_query("set names utf8;");
    $sql = "select * from user where show_name='$show_name'";
    // echo $sql."<br />";
    $r = mysql_query($sql);
    $r = mysql_num_rows($r);
    var_dump($r);   
}else{
?> 
<html>
<head></head>
<body>
<form method="get">
    <input type="text" name="name" />
    <input type="submit" value="submit" />
</form>
</body>
</html>
<?php
}
?>

如果系统魔法引号处于关闭状态,服务端接收到的参数不用addslashes转意的话会很容易产生sql注入,比如输入:

苏俊杰' or 1='1

则服务端sql会是:

select * from user where show_name='苏俊杰' and 1='1';

输出结果会为:

string(18) "苏俊杰' or 1='1" int(926) 

可以看到这里查出了系统所有用户(总共926个用户)。

另外PDO和mysqli使用变量绑定的时候会自动对变量进行转意,同样会防止此类sql注入的问题发生。

转载于:https://www.cnblogs.com/sooj/archive/2013/06/13/3134426.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值