PHP+MySQL實現簡單的登入(SQL注入入門實驗)
阿新 • • 發佈:2018-12-30
本實驗是入門級的SQL注入實驗,手工注入吧,用sqlmap就沒意思了,簡單過程:使用者輸入使用者和密碼然後提交,服務端收到使用者和密碼並查詢資料庫輸出到頁面。
一、建立資料庫
create database web1;
建立兩張表,一張儲存登入使用者和密碼,另一張儲存flag:
create table test(user varchar(15),password varchar(16));
create table flag();
二、編寫使用者登入頁面
index.htnl:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>簡單SQL注入頁面</title> </head> <body style="background-color: #006400"> <h2 align="center" style="color: white">圖書管理系統後臺登入</h2> <!--將使用者輸入的user,和pass提交到login.php--> <form align="center" action="login.php" method="post" enctype="multipart/form-data"> <!--使用者輸入的賬號儲存在user變數,密碼儲存在pass變數--> <p style="width: 100%;height: 30px;display: block;line-height: 200px;text-align: center;color:white;font-size:16px;">賬 號:<input type="text" name="user" value="" max="10"></p> <p style="width: 100%;height: 30px;display: block;line-height: 200px;text-align: center;color:white;font-size:16px;">密 碼:<input type="password" name="pass" value="" min="6" max="16"></p> <p style="width: 100%;height: 30px;display: block;line-height: 200px;text-align: center;"><input type="submit" name="submit" value="登入"></p> </form> </body> </html>
三、編寫後臺處理頁面
login.php:
<?php //連線資料庫,主機,使用者名稱,密碼,資料庫 $con=mysqli_connect("localhost","root","666666","web1"); if(!$con) {//連線失敗會輸出error+錯誤程式碼 die("error:".mysqli_connect_error()); } //把使用者在index.html輸入的賬號和密碼儲存在$user和$pass兩個變數中 $user=$_POST['user']; $pass=$_POST['pass']; //資料庫查詢語句,就是這樣的查詢方式存在著致命的SQL注入 $sql="select * from test where user='$user' and password='$pass'"; //echo $sql; //查詢結果儲存在$res物件中 $res=mysqli_query($con,$sql); //var_dump($res); //把$res轉換成索引陣列以便輸出到頁面 $row=mysqli_fetch_array($res,MYSQLI_NUM); //var_dump($row); //如果陣列不為空就遍歷陣列到頁面 if(!is_null($row)) { for($i=0;$i<count($row);$i++) { echo $row[$i]; echo "<br>"; } } else { echo "登入失敗!"; } ?>