20155313 楊瀚 《網絡對抗技術》實驗八 Web基礎

20155313 楊瀚 《網絡對抗技術》實驗八 Web基礎

1、實驗目的

  • 1.Web前端HTML
  • 能正常安裝、啓停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。javascript

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

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

  • 4.Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證前端

  • 5.最簡單的SQL注入,XSS攻擊測試
  • 功能描述:用戶能登錄,登錄用戶名密碼保存在數據庫中,登錄成功顯示歡迎頁面。java

2、基礎問題回答

  • 1.什麼是表單
  • 答:表單通常是網頁中負責收集數據的一種模塊。表單包括兩個部分:一部分是HTML源代碼用於描述表單,另外一部分是腳本或應用程序用於處理提交的信息。mysql

  • 2.瀏覽器能夠解析運行什麼語言。
  • 答:瀏覽器能夠解析運行HTML/CSS/JSP。web

  • 3.WebServer支持哪些動態語言
  • 答:WebServer支持ASP、PHP和JSP三種動態開發語言。sql

3、實驗內容

第一階段

  • 1.首先咱們使用指令sudo apt-get install apache2安裝apache,可是顯示我已經安裝完畢。
  • 接着咱們使用apachectl start啓動apache,而且使用netstat -aptn查看開放的端口號。
  • 咱們使用瀏覽器訪問虛擬機的ip地址就能夠查看啓動apache是否成功。
  • 同時咱們在在/var/www/html這個路徑裏使用vi test.txt建立一個測試文件,咱們在這個txt文件裏輸入本身的學號,而後在瀏覽器中訪問ip地址/test.txt,而後就會看到咱們輸入的學號,證實apache是可用的。
    數據庫

  • 2.接下來我參考學長的web前端編寫了一個登錄界面的html文件,而且寫入一個javascript來進行一個登錄信息的驗證,驗證是否輸入了用戶名和密碼,而後在瀏覽器中訪問這個html。

  • 沒有輸入用戶名的狀況。
  • 沒有輸入密碼的狀況。
    apache

第二階段

  • 1.首先咱們先使用sudo apt-get install mysql安裝SQL,可是顯示沒法定位軟件包,不過咱們嘗試運行數據庫的時候發現數據庫已經安裝好了。

  • 2.接着咱們使用mysql -u root -p使用默認的root用戶進入數據庫,默認的密碼是p@ssw0rd。而後咱們使用use mysql;來選擇默認的數據庫。(PS:咱們在數據庫裏輸入命令之後都要在結束的時候打一個;
  • 進入數據庫之後咱們先嚐試使用update user set password=PASSWORD("新密碼") where user='root';來修改密碼,而後輸入flush privileges;來更新權限。

  • 以後咱們輸入quit來退出數據庫使用更新之後的密碼來登錄數據庫,發現成功登錄,說明修改密碼成功。

  • 3.接着咱們輸入create database test建立一個test數據庫,並輸入show databases進行查看。
  • 而後咱們在數據庫裏使用create table 表名 (字段設定列表);這個格式來建一個表,用來存儲咱們準備在網頁登錄界面使用的用戶名和密碼。(結尾記得輸入;哦)
  • 再使用insert into 表名 values('值1','值2','值3'...);這個格式來插入數據。
  • 最後使用select * from 表名來查看錶內的數據。

  • 4.爲了後面的實驗咱們須要添加一個新的登錄用戶,咱們輸入grant select(insert,update,delete) on 數據庫.* to 用戶名@登陸主機 identified by "密碼";建立新的用戶,而且將test的庫綁定到這個用戶上。
  • 嘗試登錄,成功。

第三階段

  • 1.一樣的咱們在/var/www/html這個路徑裏建立一個php文件,輸入學號並在瀏覽器裏進行測試。

  • 2.而後咱們能夠利用PHP和MySQL結合以前編的登陸網頁進行簡單的用戶身份認證,參考學長的php代碼,可是有些地方須要進行修改,在5201同窗的幫助下成功修改,用紅框框起來的是修改過的。
  • 而後咱們將以前的html文件中的一個action的值更改爲咱們編寫的php文件。

  • 3.若是咱們以前沒有在數據庫中建立一個新的用戶的話會出現下面鏈接失敗的狀況。

  • 4.最後咱們編寫完成之後嘗試登錄,分別輸入正確的密碼和錯誤的密碼,都能成功鏈接數據庫,而且進行用戶名與密碼的驗證。

第四階段

  • 1.最後這個階段咱們進行SQL注入攻擊(終於進入總體了)。首先咱們在用戶名中輸入' or 1=1#,密碼隨便輸入,咱們會發現咱們能夠直接登錄?原始是咱們輸入的用戶名中有一個#,與後面的查詢語句合成之後會變成select * from lxmtable where username='' or 1=1#' and password=''#會把後面的password的判斷給註釋掉,而以前的1=1是永真式,因此這個條件成立,因而能夠成功登錄。

  • 2.而後咱們能夠經過SQL注入將用戶名和密碼保存到數據庫中,可是咱們須要修改一下以前的代碼,將咱們以前的php代碼中的if ($result = $mysqli->query($query_str))改爲if ($result = $mysqli->multi_query($query_str)),而後在用戶名中輸入';insert into testtable values('yh','123456','20155313');#,接着咱們到終端查看輸入先後的表單的區別,發現添加用戶成功。
  • 注:SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來講,它是利用現有應用程序,將(惡意的)SQL命令注入到後臺數據庫引擎執行的能力,它能夠經過在Web表單中輸入(惡意)SQL語句獲得一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。

  • 3.最後咱們使用XXS攻擊測試。咱們在用戶名一欄輸入<img src="jordan.jpg" />20155313</a>,而後隨便輸入密碼點擊登錄,發現顯示登錄失敗,判斷多是代碼的安全性過高了,所以沒法實現攻擊。而後我在同窗主機上使用她的代碼進行測試,發現攻擊成功。
  • 同窗的虛擬機上能夠實現攻擊。
  • 最後我修改了代碼,將以前註釋掉的部分刪掉,結果在本身的虛擬機上xxs攻擊最終也成功了。

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

4、實驗體會

  • 本次實驗咱們使用到了web編程的知識,是上個學期學習的,看來學習效果挺好,沒有忘記太多,可是在具體的編程實現上仍是有所遺漏的,本次實驗幫助咱們從新複習了web編程的內容。本次實驗的攻擊環節不是不少,主要時間都花費在了製做攻擊的環境,目前在驗證登錄環節針對數據庫的攻擊仍是較爲常見的,所以在編寫web代碼的時候應該保障其安全性,不要給數據庫攻擊留下攻擊的機會。本次實驗還接觸到了php代碼,用來執行動態網頁的action操做,比以前學習的jsp來講,php更加簡單,適合咱們編寫這種較小型的測試代碼。
相關文章
相關標籤/搜索