基于约束的攻击是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
一、基于约束的sql攻击原理
1、新建表格名字为user,该表的约束的是名字和密码长度不能超过10
create table user(id int primary key auto_increment,//id字段,int类型,关键字,自动增加name varchar(10) not null,//name字段,字符串,不允许为空pass varchar(10) not null)//year字段,int类型,不允许为空
2、插入两条正常数据
insert into user (name,pass) values ("aiyou",123456);insert into user (name,pass) values ("admin",123456);
3、插入长度大于10的用户名
insert into user (name,pass) values ("admin123456789",123456);
4、查看插入的数据,发现只保留了十个字符
5、再插入一条加空格的用户名,发现和不加空格插入的admin一样
二、实例应用
1、访问http://192.168.0.104/aiyou/php/zc.html,提示输入用户名和密码,输入点击提交,提示用户名已存在
2、试着把用空格填充,密码为123321
3、查看数据库,成功插入管理员账号
三、源码
html页面:
<form action="zc.php" method="post" target="_blank">用 户 名:<input type="text" name="user">密 码:<input type="password" name="pass1">确认密码:<input type="password" name="pass2"><input type="reset"><input type="submit" name="submit" value="提交"></form>
PHP页面:
<meta charset="gbk"><?php$host="192.168.0.104";$username="root";$password="root";$dbname="jay";$mysql=new Mysqli($host,$username,$password,$dbname);if($mysql->connect_errno){ die("数据库连接失败:".$mysql->connect_errno);}else{ if(isset($_POST['submit'])){ $name=$_POST['user']; $sql="select * from user where name='$name'"; $res=$mysql->query($sql); $num=$res->num_rows; #echo $num; if($num==0) { $password=$_POST['pass1'];//获取表单里的密码 if(isset($_POST['user']) && isset($_POST['pass1']) && isset($_POST['pass2'])) { #echo $password; #echo "<br>"; $q="insert into user(name,pass) values ('$name',$password)";//向数据库中添加数据 #echo $q; #echo "<br>"; $res=$mysql->query($q);//执行sql语句 #echo $res; #echo "<br>"; $mysql->close(); echo "恭喜".$_POST['user']."注册成功"; }else{ echo "注册信息有误"; } }else{ echo "用户名已存在"; } }else{ echo "请通过表单提交"; }}?>
看完上述内容,你们掌握基于约束的攻击是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。