1. 程式人生 > >EXP8 Web基礎 20154310

EXP8 Web基礎 20154310

bsp bmi sql語句 var strong mys || form enable

一、實驗過程

1.輸入sudo vi/etc/apache2/ports.conf查看apache端口情況,更改端口號。

技術分享圖片

因為未知原因無法更改,因而跳過這個步驟,沿用原來的端口號4316.

2.通過service apache2 start開啟Apache,使用netstat -aptn查看確認端口占用

技術分享圖片

3.瀏覽器中輸入localhost:4316,登錄到Apache首頁驗證其可用

技術分享圖片

4.訪問Apache工作目錄cd /var/www/html,新建一個4310.html文件

技術分享圖片

5.編寫一個含有表單的html

  技術分享圖片

6.登錄瀏覽器,輸入localhost:4316/4310.html,成功出現下圖界面

技術分享圖片

7.在上面的文本框內隨意輸入,然後點擊確認按鈕數據會傳送到html_form_action.php的頁面,由於沒有對此頁面進行編輯,出現的是404

技術分享圖片

2.2 Web前端javascipt

1.編寫驗證用戶名和密碼的規則:(比如用戶名和密碼不能為空)
代碼如下:

  • 實現了一個驗證用戶名、密碼的規則

<html>  
<head>  
<title>test</title>   
</head> 
<body>           
<table>  
    <form method ="POST" action="#" name="frmLogin"  >  
    <tr>  
    <td>user</td>  
       <td><input type="text" name="username" value="Your name" size="20" maxlength="20" onfocus="if (this.value==‘Your name‘) this.value=‘‘;" /></td>  
    <td> </td>  
    <td> </td>  
    </tr>  
    <tr>  
    <td>password</td>  
  <td><input type="password" name="password" value="Your password" size="20" maxlength="20" onfocus="if (this.value==‘Your password‘) this.value=‘‘;" /></td>  
    <td> </td>  
    <td> </td>  
    </tr>  
    <tr>  
    <td><input type="checkbox" name="zlogin" value="1">auto login</td>  
    </tr>     
    <table>  
    <tr>  
        <td><input type="submit" name="login" value="login" onClick="return validateLogin()"/></td>  
            <td><input type="reset" name="rs" value="reset" /></td>  
        </tr>
    </table>    
    </form> 
</table>   
 
<script language="javascript">  
    function validateLogin(){  
        var sUserName = document.frmLogin.username.value ;  
        var sPassword = document.frmLogin.password.value ;    
        if ((sUserName =="") || (sUserName=="Your name")){  
            alert("user name");  
            return false ;  
        }  
       
        if ((sPassword =="") || (sPassword=="Your password")){  
            alert("password!");  
            return false ;  
        }  
    
    }   
</script>  
</body>  
</html>  

效果如下:

2.登入瀏覽器,輸入localhost:4316/4310的都是.html進行測試。

若不輸入密碼

技術分享圖片

若密碼小於6位

技術分享圖片

2.3 MySQL基礎

1.輸入/etc/init.d/mysql start打開mysql服務

2.輸入mysql -u root -p,以root身份登錄,根據提示輸入密碼,默認密碼為p@ssw0rd,進入MySQL

技術分享圖片

在MySQL中輸入命令後面都要帶一個分號作為命令結束符

3.修改密碼

輸入use mysql;,選擇mysql數據庫

技術分享圖片

  • 輸入select user, password, host from user;,顯示mysql庫中已有的用戶名、密碼與權限

  • 輸入UPDATE user SET password=PASSWORD("新密碼") WHERE user=‘root‘;更改用戶名root的密碼

  • 輸入flush privileges;,更新權限。

技術分享圖片

輸入quit退出,重新輸入mysql -u root -p重新進入,使用新密碼登錄成功,說明修改成

技術分享圖片

4.創建新表

  • 輸入CREATE SCHEMA庫表的名稱;

  • 輸入insert into users(userid,username,password,enabled) values(1,‘20154310‘,password("20154310"),"TRUE");

技術分享圖片

5.在表中添加內容

  • 輸入use 4310-lql打開表
  • 輸入insert into users(userid,username,password,enabled) values(1,‘20154310‘,password("20154310"),"TRUE");進行內容的添加

  技術分享圖片

2.4 PHP基礎

1.測試一下php。還是在原位置新建一個php文件
*以下是一個php測試代碼:

<?php

echo ($_GET["a"]);

include($_GET["a"]);

echo "This is linqiliang php test page!<br>";

?>

2.瀏覽器打開localhost:4316/login.php

技術分享圖片

2.5 PHP+MySQL實現登錄網頁編寫

最終登錄網頁的代碼如下:

<html>  
<head>  
<title>test</title>   
</head> 
<body>           
<table>  
    <form method ="POST" action="login.php" name="frmLogin"  >  
    <tr>  
    <td>user</td>  
    <td><input type="text" name="username" value="Your name" size="20" onfocus="if (this.value==‘Your name‘) this.value=‘‘;" /></td>  
    <td> </td>  
    <td> </td>  
    </tr>  
    <tr>  
    <td>password</td>  
<td><input type="password" name="password" value="Your password" size="20" maxlength="20" onfocus="if (this.value==‘Your password‘) this.value=‘‘;" /></td>  
    <td> </td>  
    <td> </td>  
    </tr>  
    <tr>  
    <td><input type="checkbox" name="zlogin" value="1">auto login</td>  
    </tr>     
    <table>  
    <tr>  
        <td><input type="submit" name="login" value="login" onClick="return validateLogin()"/></td>  
        <td><input type="reset" name="rs" value="reset" /></td>  
        </tr>
    </table>    
    </form> 
</table>   

<script language="javascript">  
    function validateLogin(){  
        var sUserName = document.frmLogin.username.value ;  
        var sPassword = document.frmLogin.password.value ;    
        if ((sUserName =="") || (sUserName=="Your name")){  
        alert("user name");  
        return false ;  
        }  

        if ((sPassword =="") || (sPassword=="Your password")){  
        alert("password!");  
        return false ;  
        }  

    }   
</script>  
</body>  
</html>  

2.我新建了數據庫和表

我的修改為grant select,insert,update,delete on lql.* to hqy@localhost identified by "20154310";

3.利用PHP和MySQL結合之前編的登錄網頁進行簡單的用戶身份認證,這裏我參考的是老師給的代碼編寫login.php,代碼如下所示:

<?php

$uname=($_POST["username"]);
$pwd=($_POST["password"]);

/* echo $uname; */

$query_str="SELECT * FROM yqh666table where username=‘$uname‘ and password=‘$pwd‘;";

/* echo "<br> {$query_str} <br>";*/

$mysqli = new mysqli("127.0.0.1", "hqy", "20154322", "yqh666");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
echo "connection ok!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
    if ($result->num_rows > 0 ){
        echo "<br> Welcome login Mr/Mrs:{$uname} <br> ";
    } else {
        echo "<br> login failed!!!! <br> " ;
    }

    /* free result set */
    $result->close();
}


$mysqli->close();

?>

4.打開瀏覽器輸入localhost:8080/login_test.html登錄,輸入用戶名及密碼,會自動跳轉到login.php

用戶名和密碼是數據庫中表中的username和password

  • 和MySQL表中匹配時,這如下界面:

技術分享圖片

2.6 SQL註入攻擊

QL註入攻擊:可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的數據庫,通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。

在登錄界面用戶名處輸入‘ or 1=1#,密碼隨意,發現可以成功登錄(在代碼中有這個語句select * from users where username=‘‘ or 1=1#‘ and password=‘‘ #是註釋符,將其後面的內容給註釋掉,所以只剩下前面的1=1,這是一個恒成立的式子,因此可以成功的登錄)

1.在登錄界面用戶名處輸入‘ or 1=1#,密碼隨意,發現可以成功登錄

技術分享圖片

    • 成功登陸的原因是這樣的:
      在代碼中有這個語句select * from users where username=‘‘ or 1=1#‘ and password=‘‘ #是註釋符,將其後面的內容給註釋掉了,只剩下前面的1=1,恒成立,所以就可以成功登錄。

7、xss攻擊

XSS攻擊:跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆。故將跨站腳本攻擊縮寫為XSS。XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞由於被駭客用來編寫危害性更大的phishing攻擊而變得廣為人知。對於跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的“緩沖區溢出攻擊“,而JavaScript是新型的“ShellCode”。

將圖片保存在/var/www/html下:

技術分享圖片

用戶名輸入<img src="20154310.jpg">123</a>

技術分享圖片

三、心得體會

這次實驗任務量非常大,雖然中間操作都沒有很難理解的地方,但是開始的時候對原理一知半解,所以中間經歷了許多次失敗推倒重來,我要努力學習網絡安全知識才能防止自己被黑客入侵了還一無所知。

EXP8 Web基礎 20154310