2018-2019-2 網絡對抗技術 20165227 Exp8 Web基礎

2018-2019-2 網絡對抗技術 20165227 Exp8 Web基礎

問題

  • 什麼是表單
    在網頁中主要負責數據採集功能。一個表單有三個基本組成部分: 表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。 表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等。 表單按鈕:包括提交按鈕、復位按鈕和通常按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。
  • 瀏覽器能夠解析運行什麼語言。
    超文本標記語言:HTML
    可擴展標記語言:XML
    腳本語言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。javascript

  • WebServer支持哪些動態語言
    PHP、JSP。php

實驗步驟

實驗一:Web前端HTML

一、安裝Apache(已安裝)
二、Apachecss

  • 命令service apache2 start 啓動服務
  • 若是失敗,能夠用netstat -tupln | grep 80 查詢80端口是否被佔用
  • 命令service apache2 stop中止服務

三、測試html

  • 瀏覽器輸入127.0.0.1:80
    前端

  • 瀏覽器輸入127.0.0.1:80/5227zy.html
    java

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陸頁面</title>
<script language="javascript">
var movingID=null;
var scrolling=false;
function startMove()
{
    
    var left=eval(bear.style.left.replace("px",""));
    if(left <document.body.scrollWidth-400)
        bear.style.left=left+1;
    else
        bear.style.left=1;
    movingID=setTimeout("startMove()",0.1); 
    
}
function mysubmit()
{ 
    if(document.form1.password.value==""   || document.form1.username.value=="")
    {
        alert("帳號、密碼不能爲空!");
        window.location.href="login.html"
    
    }   
    else
       form1.submit();

}
</script>
<style type="text/css">
a:link{color:#41506D;font-size:125%;text-decoration:none}
a:visited{color:#41506D;font-size:125%;text-decoration:none}
a:hover{color:#FFF200;font-size:125%;text-decoration:none}
</style>
</head>
<body  onload="startMove()" style="background-image: url(./login.png);background-repeat:no-repeat;topmargin:60;leftmargin:12 ;overflow-x:hidden;overflow-y:scroll;" >
<br><br><br>
    <p align="right">
    <a  target=_parent href="index.jsp" >登 錄</a>    &nbsp;&nbsp;     <a target=_parent href="addone.jsp" >注 冊</a>
    </p>
<form action="login.php" method="POST" name="form1">
<table style="background: url(./登陸.png);background-repeat:no-repeat;position:relative;left:300px;top:0px;border-collapse:collapse;">
<tr><th style="border:5px solid white;height:50px;width:230px;padding:0px;text-align:center;vertical-align:center;color:#41506D;font-size:150%;font-family:Microsoft YaHei UI;">
 登 錄 界 面
</th></tr>
<tr>
<td style="border:5px solid white;height:180px;width:230px;padding:0px;text-align:center;vertical-align:center;color:#41506D;">

<p style="position:absolute;left:27px;top:50px;font-size:130%;color:black;font-family:Microsoft YaHei UI;">用戶名 </p>
 <input align="center" type="text" name = "username"  style="position:absolute;left:100px;top:70px;height:35px;width:100px;font-size:130%;"/> <br><br>
<p style="position:absolute;left:27px;top:100px;font-size:130%;color:black;font-family:Microsoft YaHei UI;">密&nbsp;&nbsp;&nbsp;碼 </p>
&nbsp; <input align="center" type="password" name = "password"  style="position:absolute;left:100px;top:120px;height:35px;width:100px;font-size:130%;"> <br>
<input type = "button" value = "提交" onClick="mysubmit()" style="position:absolute;left:50px;top:190px;height:35px;width:150px;font-size:120%;">

</td>
</tr>
</table></form>

<div id="bear" style="visibility:visible;position:absolute;left:1px;top:330px;z-index:1;width:400px;height:170px;overflow-x:hidden;overflow-y:hidden;">
</div>

</body>
</html>

實驗二:Web前端javascipt

  • 規則:限制用戶必須輸入用戶名和密碼

實驗三:Web後端

一、Mysql安裝(自帶)
二、啓動mysql

  • 命令/etc/init.d/mysql start開啓服務
    三、數據庫操做
  • 命令mysqladmin -u root password "5227" ,將root的密碼修改成5227
  • 執行mysql -u root -p 以root身份登陸MySQL
    web

  • 命令GRANT USAGE ON *.* TO 'zhuyue'@'localhost' IDENTIFIED BY '5227' WITH GRANT OPTION;創建新用戶
    sql

  • 命令use mysql使用數據庫;select user, password from user;查詢用戶
  • 命令grant all privileges on *.* to 'szk' identified by '20165228' with grant option; FLUSH PRIVILEGES; 給新用戶賦予權限
  • 命令create database zhuyue27;建立zhuyue27數據庫
  • drop database zhuyue27;能夠刪除數據庫
    數據庫

  • 使用zhuyue27數據庫,執行create table zy (username VARCHAR(20),password VARCHAR(20));新建表
  • 向表中插入數據insert into zy values('20165227','72256102');

  • 命令grant select,insert,update,delete on zhuyue27.* to zhuyue@localhost identified by "5227"; 將對某數據庫的全部表select,insert,update,delete權限授予當前主機localhost用戶zhuyue,其密碼是5227

  • 編寫PHP網頁,進行用戶認證login.php

<?php

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

echo $uname; 

$query_str="SELECT * FROM zy where username='{$uname}' and password='{$pwd}';";

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

$mysqli = new mysqli("127.0.0.1", "zhuyue", "5227", "zhuyue27");

/* 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> Wellcome login Mr/Mrs:{$uname} <br> ";
    } 
    else {
        echo "<br> login failed!!!! <br> " ;
    }

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


$mysqli->close();

?>
  • 登錄成功

  • 登錄失敗

實驗四:SQL注入

  • 原理:
    SQL注入攻擊指的是經過構建特殊的輸入做爲參數傳入Web應用程序,而這些輸入大都是SQL語法裏的一些組合,經過執行SQL語句進而執行攻擊者所要的操做,其主要緣由是程序沒有細緻地過濾用戶輸入的數據,導致非法數據侵入系統。
  • 攻擊:
    當應用程序使用輸入內容來構造動態sql語句以訪問數據庫時,會發生sql注入攻擊。若是代碼使用存儲過程,而這些存儲過程做爲包含未篩選的用戶輸入的字符串來傳遞,也會發生sql注入。sql注入可能致使攻擊者使用應用程序登錄在數據庫中執行命令。相關的SQL注入能夠經過測試工具pangolin進行。若是應用程序使用特權太高的賬戶鏈接到數據庫,這種問題會變得很嚴重。在某些表單中,用戶輸入的內容直接用來構造動態sql命令,或者做爲存儲過程的輸入參數,這些表單特別容易受到sql注入的攻擊。而許多網站程序在編寫時,沒有對用戶輸入的合法性進行判斷或者程序中自己的變量處理不當,使應用程序存在安全隱患。這樣,用戶就能夠提交一段數據庫查詢的代碼,根據程序返回的結果,得到一些敏感的信息或者控制整個服務器,因而sql注入就發生了。
  • 在網頁登陸的用戶名中填寫' or 1=1#,密碼隨意,成功登錄:

(這時候的合成後的SQL查詢語句爲select * from users where username='' or 1=1#' and password=md5(''),#至關於註釋符,會把後面的內容都註釋掉,而1=1是永真式,因此這個條件確定恆成立)

實驗五:XSS攻擊測試

  • 在登陸的用戶名中輸入:< img src="zy.jpg" />zhuyue</ a>,讀取/var/www/html目錄下的圖片:

實驗感想

  • 這次實驗用到了許多上學期學的知識,爲了完成實驗還去複習了一下,果真學過的知識不復習就會忘得很快啊。。。仍是挺有趣的一個實驗~
相關文章
相關標籤/搜索