20145228《網絡對抗技術》Web基礎

實驗內容

(1)Web前端HTMLjavascript

安裝、啓停Apache。理解GET與POST方法,編寫一個含有表單的HTML。php

(2)Web前端javascipthtml

理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則。前端

(3)Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表java

(4)Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證mysql

(5)最簡單的SQL注入,XSS攻擊測試web

基礎問題回答

(1)什麼是表單sql

表單:能夠收集用戶的信息和反饋意見,是網站管理者與瀏覽者之間溝通的橋樑。 表單包括兩個部分:一部分是HTML源代碼用於描述表單(例如,域,標籤和用戶在頁面上看見的按鈕),另外一部分是腳本或應用程序用於處理提交的信息(如CGI腳本)。不使用處理腳本就不能蒐集表單數據。數據庫

表單一般是交由CGI(公共網關接口)腳本處理。CGI是一種在服務器和處理腳本之間傳送信息的標準化方式。CGI腳本比較典型的是使用Perl語言編寫,固然也有其餘語言如C++,Java,VBScript或JavaScript。在建立交互表單以前,接洽您的ISP或服務器管理員以確認CGI腳本能夠在您的服務器上運行。
表單由文本域、複選框、單選框、菜單、文件地址域、按鈕等表單對象組成,全部的部分都包含在一個由標識符標誌起來的表單結構中。
表單的種類有註冊表、留言薄、站點導航條、搜索引擎等。apache

(2)瀏覽器能夠解析運行什麼語言。

支持HTML(超文本標記語言)、XML(可擴展標記語言)以及Script、Python、PHP、ASP等衆多腳本語言。

(3)WebServer支持哪些動態語言

php、asp、java、ruby等

實驗過程

前端HTML

·apachectl start命令開啓Apach,使用netstat -aptn命令查看端口占用:

·vi /etc/apache2/ports.conf進入vi修改80端口爲5228

·而後在瀏覽器中輸入localhost:5228,發現能夠進入上一實驗完成的網頁

·在var/www/html目錄下,建立一個HTML文件,

<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" /></td>  
    <td> </td>  
    <td> </td>  
    </tr>  
    <tr>  
    <td>password:</td>  
    <td><input type="password" name="password" value="Your password" size="20" maxlength="20" /></td>  
    <td> </td>  
    <td> </td>   
    <table>  
    <tr>  
        <td><input type="submit" name="login" value="login" /></td>  
            <td><input type="reset" name="rs" value="reset" /></td>  
        </tr>
    </table>    
    </form> 
</table>   
</body>  
</html>

瀏覽器打開localhost:5228/test.html網頁進入

前端javascipt

•JavaScript是一種屬於網絡的腳本語言,已經被普遍用於Web應用開發,經常使用來爲網頁添加各式各樣的動態功能,爲用戶提供更流暢美觀的瀏覽效果,一般JavaScript腳本是經過嵌入在HTML中來實現自身的功能的。

•DOM是文檔對象模型,DOM能夠以一種獨立於平臺和語言的方式訪問和修改一個文檔的內容和結構,換句話說,這是表示和處理一個HTML或XML文檔的經常使用方法。舉個例子,要改變頁面的某個東西,JavaScript就須要得到對HTML文檔中全部元素進行訪問的入口。這個入口,連同對HTML元素進行添加、移動、改變或移除的方法和屬性,都是經過DOM來得到的。

·將test.html文件增長一段

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

再次登陸沒輸入帳號密碼就會彈出

Web後端:編寫PHP網頁

·建立一個php格式文件,代碼爲:

<?php
  echo ($_GET["A"]);
  include($_GET["A"]);
  echo "this is 20145228 first php page!<br>";
?>

·瀏覽器進入localhost:5228/5228test.php

Web後端:MySQL基礎

·/etc/init.d/mysql start打開mysql服務

·mysql -u root -p進入MySQL:,默認密碼爲p@ssw0rd

·show databases;查看信息

·修改密碼按以下步驟執行:

·use mysql;,選擇mysql數據庫
·select user, password, host from user;
·UPDATE user SET password=PASSWORD("新密碼") WHERE user='root';
·flush privileges;,更新權限
·quit退出

·以下指令建立新表:

CREATE SCHEMA `庫表的名稱`;
CREATE TABLE `庫表的名稱`.`users` (
 `userid` INT NOT NULL COMMENT '',
 `username` VARCHAR(45) NULL COMMENT '',
 `password` VARCHAR(256) NULL COMMENT '',
 `enabled` VARCHAR(5) NULL COMMENT '',
 PRIMARY KEY (`userid`) COMMENT '');

·表中添加內容按以下指令

use 剛剛創建的庫表的表名

insert into users(userid,username,password,enabled) values(1,'用戶id',password("用戶密碼"),"TRUE");

覈對一下信息

php+mysql編寫網頁

•網頁登陸頁面:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
    <script type="text/javascript"> 
         $("#login-button").click(function(event){
                 event.preventDefault();         
             $('form').fadeOut(500);
             $('.wrapper').addClass('form-success');
        });
        function check(){
        {
          if(form.username.value == "")
          {
            alert("您尚未填寫用戶名!");
            form.username.focus();
            return false;
          }
          if(form.pass.value == "")
          {
            alert("您尚未填寫密碼!");
            myform.pass.focus();
            return false;
          }
        }   
    </script>
</head>
<body>
    <div class="wrapper">
        <div class="container">
            <h1>Welcome</h1>        
            <form name='form' class="form" method='get' action='login.php' onSubmit="return check()">
                <input type="text" placeholder="Username" name='username'>
                <input type="password" placeholder="Password" name='password'>
                <button type="submit" id="login-button" name='submit' value='submit'>Login</button>
                <button type="submit" id="register-button"><a href="register.html" class="cc">register</a></button>
            </form>
        </div>
    </div>
</body>
</html>

php頁面:

<?php
$uname=($_GET["username"]);
$pwd=($_GET["password"]);
echo $uname; 
$query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');";
echo "<br> {$query_str} <br>";
$mysqli = new mysqli("127.0.0.1", "root", "5228", "j_5228");
/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
}
else echo "lalalademaxiya.<br>";

if ($result1= $mysqli->multi_query($query_str))
        echo "lalalajiecaobujianle <br> ";
$mysqli->close();
$mysqli = new mysqli("127.0.0.1", "root", "5228", "j_5228");
/* 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注入

·永真式注入

·直接在用戶名處輸入' or 1=1#

XSS攻擊測試

在用戶名處輸入<img src="5228.jpg" />20145228</a>能夠將5228.jpg在網頁中打開

實驗收穫

本次實驗涉及到了網絡編程的知識,回顧了老知識的同時,也學習了許多Web應用的一些基礎,以及簡單的SQL注入,XSS攻擊測試等網絡攻擊知識,難度稍微較大,但也更有意思了。

相關文章
相關標籤/搜索