1. 程式人生 > >PHP+MySQL實現簡單的登入(SQL注入入門實驗)

PHP+MySQL實現簡單的登入(SQL注入入門實驗)

本實驗是入門級的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 "登入失敗!";
	} 
?>