20155205 郝博雅 Exp 8 Web基礎

20155205 郝博雅 Exp 8 Web基礎

1、實驗目標

(1).Web前端HTML(0.5分)javascript

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

(2).Web前端javascipt(0.5分)html

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

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

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

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

功能描述:用戶能登錄,登錄用戶名密碼保存在數據庫中,登錄成功顯示歡迎頁面。sql

2、實驗內容

Web前端HTML

  • 使用指令apachectl start打開Apache服務,使用netstat -aptn查看一下端口占用。能夠看到上次實驗更改的信息。

  • 在kali的瀏覽器中輸入localhost:80。按理說應該能夠看到上次克隆的網址,可是咱們可能會看到這個網頁。出現這個網頁也能夠說明apache在正常運行,只是須要替換一下/var/www/html/index.html的網頁。具體網頁信息可看:翻譯

  • 使用cd /var/www/html進入到Apache的工做目錄下,vi test.html新建一個含有表單的html:
<html>
<head>
    <title>login</title>
</head>
<body>
    <form name=form method=post action=#>
        <table>
            <tr>
                <td colspan=2>Login interface</td>  
            </tr>
            <tr>
                <td>user:</td>
                <td><input type=text name=user size=16></td>
            </tr>
            <tr>
                <td>pwd:</td>
                <td><input type=password  name=pwd size=16></td>
            </tr>
            <tr>
                <td colspan=2><input type=submit value=submit></td>
            </tr>
        </table>
    </form>
</body>
</html>
  • 能夠看到效果:

  • 咱們尚未寫登錄後的頁面,因此action值爲"#",這是form標籤的屬性,表明提交數據到本頁。
  •  HTTP 定義了與服務器交互的不一樣方法,最基本的方法是 GET 和 POST。
POST方式,數據放置在HTML HEADER內提交,數據在URL中看不到

GET只能傳輸比較少的數據,安全性較低,POST傳輸數據較多,安全性也比GET高

Web前端javascipt

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

  • 咱們可使用JavaScript來編寫一個驗證用戶名、密碼的規則:檢查頁面中的登陸用戶名,密碼是否爲空,且密碼長度很多於6。apache

  • 代碼以下:

  • 當輸入了用戶名卻沒有輸入密碼時:

  • 當輸入的密碼小於6位時:

Web後端:MySQL基礎

  • 一開始就遇到了一個問題

  • 修改了配置、更新了下載源都無法解決這個問題,因此換了個虛擬機
  • 先輸入/etc/init.d/mysql start指令開啓mysql服務,輸入mysql -u root -p,並根據提示輸入密碼,默認密碼爲p@ssw0rd,進入MySQL。
  • 對密碼進行修改:輸入use mysql;,選擇mysql數據庫;輸入update user set password=PASSWORD("20155205") where user='root';,修改密碼;輸入flush privileges;,更新權限;

  • 使用create database hby_exp;創建一個數據庫;使用show databases;查看存在的數據庫;使用use hby_exp;使用咱們建立的數據庫:(千萬不要忘記語句後的「;」)

  • 使用create table 表名 (字段設定列表);創建數據庫表,並設置字段基本信息;使用show tables;查看存在的數據表

  • 使用insert into 表名 values('值1','值2','值3'...);插入數據;使用select * from 表名查詢表中的數據:

  • 在MySQL中增長新用戶,使用grant select,insert,update,delete on hby_exp.* to amy2@localhost identified by "222";指令,這句話的意思是將對某數據庫的全部表的select,insert,update,delete權限授予某ip登陸的某用戶:

Web後端:編寫PHP網頁

  • 在/var/www/html目錄下新建一個PHP測試文件test.php,內容爲:
<?php
echo ($_GET["a"]);
include($_GET["a"]);
echo "This is 20155205hby's php test page!<br>";
?>
  • 在瀏覽器網址欄中輸入localhost:80/test.php?a=/etc/passwd,可看到/etc/passwd文件的內容

  • 利用PHP和MySQL結合以前編的登陸網頁進行簡單的用戶身份認證,將以前編的登陸網頁的login.html代碼中form的action屬性由#改爲login.php,即登陸後跳轉到login.php,再在火狐瀏覽器中輸入localhost:80/login.html訪問本身的登陸頁面.
  • 登錄成功:

  • 登錄失敗:

SQL注入

  • 在用戶名輸入框中輸入' or 1=1#,密碼隨便輸入,是能夠登錄成功的。

  • 咱們還能夠經過SQL注入將用戶名和密碼保存在數據庫中,可是得修改一下以前的代碼,由於咱們以前編的代碼中if ($result = $mysqli->query($query_str))這條判斷語句不容許多條sql語句執行,因此將它改爲if ($result = $mysqli->multi_query($query_str))便能實現執行多個sql語句
    在用戶名輸入框中輸入';insert into users values('5205','20155205');#,接着登陸會看到失敗

  • 可是已經插入到咱們的數據庫表中

  • 使用插入的用戶名和密碼登錄

XSS攻擊測試

  • XSS攻擊是攻擊者經過在原始頁面注入惡意的javascript腳本語言,達到獲取用戶token,從而達到僞造用戶身份的目的。

1.簡單攻擊

  • 將一張圖片存入/var/www/html目錄
    在用戶名輸入框中輸入<img src="hhh.jpeg" />hhh</a>讀取/var/www/html目錄下的圖片:

2.非持久型攻擊

  • 經過瀏覽器執行,從而達到攻擊目的,僅僅對當前頁面產生影響。

  • 新建一個test.php,輸入下面的代碼,即在url中插入一段js代碼

  • 在瀏覽器中輸入localhost/test.php會顯示下圖中的頁面

  • 點擊Click to Download後會彈到'http://www.cnblogs.com/bangerlee/'這個網站

  • 第一種攻擊:輸入http://localhost/test.php?name=guest<script>alert('attacked')</script>,簡單輸出alert對話框

  • 第二種攻擊:將標籤爲a的url改寫成爲attacker的url
http://localhost/test.php?name=  
<script>  
window.onload = function() {  
var link=document.getElementsByTagName("a");link[0].href="http://attacker-site.com/";}  
</script>

  • 第三種攻擊:將攻擊代碼改成ascii,隱蔽的攻擊
http://localhost/test.php?  
name=%3c%73%63%72%69%70%74%3e%77%69%6e%64%6f%77%2e%6f%6e%6c%6f%61%64%20%3d%20%66%75%6e%63%74%69%6f%6e%28%29%20%7b%76%61%72%20%6c%69%6e%6b%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%22%61%22%29%3b%6c%69%6e%6b%5b%30%5d%2e%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%61%74%74%61%63%6b%65%72%2d%73%69%74%65%2e%63%6f%6d%2f%22%3b%7d%3c%2f%73%63%72%69%70%74%3e
  • 跳轉後的頁面和第二種攻擊是同樣的

3.持久型攻擊

  • 意味着此次攻擊所影響的時間更爲持久。如能夠經過一次攻擊獲取用戶的cookie,從而掌握其sessionID,模擬用戶和服務器交互,竊取用戶信息。

3、基礎問題回答

(1)什麼是表單

  • 表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分: 表單標籤、
    表單域(包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等)、
    表單按鈕(包括提交按鈕、復位按鈕和通常按鈕.表單按鈕能夠用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做)。

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

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

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

  • JavaScript、ASP、PHP、Ruby等腳本語言。

4、實驗體會

此次實驗遇到了不少問題,都是虛擬機配置出了錯,因此途中換了兩次虛擬機。最後本身在網上找了一些關於sql和xss的資料,挑了較簡單的(不須要從新搭環境的)作了一下,仍是很有收穫的。

相關文章
相關標籤/搜索