您好,登錄后才能下訂單哦!
基于約束的攻擊是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一、基于約束的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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。