1. 程式人生 > >20145301趙嘉鑫《網絡對抗》Exp8 Web基礎

20145301趙嘉鑫《網絡對抗》Exp8 Web基礎

str net 標記語言 reat 標記 grant mysq 增加 val

20145301趙嘉鑫《網絡對抗》Exp8 Web基礎

基礎問題回答

什麽是表單?

  • 表單是一個包含表單元素的區域,主要負責數據采集部分。表單元素允許用戶在表單中輸入信息。一個表單有三個基本組成部分:表單標簽、表單域、表單按鈕;

    • 表單標簽:包含處理表單數據所用的URL以及數據提交到服務器的方法;
    • 表單域:包含了文本框、密碼框、多行文本框、下拉選擇框等等;
    • 表單按鈕:包括提交按鈕、復位按鈕和一般按鈕。

瀏覽器可以解析運行什麽語言?

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

WebServer支持哪些動態語言?

  • JavaScript、ASP、PHP、Ruby等腳本語言,
  • JSP,是一個簡化的servlet設計,其web應用有好的跨平臺性。
  • ASP是微軟的服務器端腳本技術。
  • PHP基於APACHE WEB SERVER,是一種通用開源腳本語言。

實踐目標

(1)Web前端:HTML基礎
(2)Web前端:javascipt基礎
(3)Web後端:MySQL基礎
(4)Web後端:PHP基礎
(5)SQL註入,XSS攻擊測試
(6)發帖和會話管理的實現

Apache

  • 本次Web開發是基於Apache服務器進行的。
  • 安裝指令sudo apt-get install apache2
  • 對於Apache的配置可以輸入指令 sudo vi /etc/apache2/ports.conf指令來進行修改,端口改到了80。
  • 指令apachectl start打開Apache服務,使用netstat -aptn查看端口占用。
  • 如果端口被占用,使用netstat -tupln |grep 80指令查看80端口被哪些進程占用,用kill+進程ID殺死進程
  • Apache服務開啟後,瀏覽器中輸入localhost:80進行查看,打開了上次實驗克隆的網頁,說明Apache正常工作。

HTML基礎與javascipt基礎

  • cd var/www/html進入到Apache的工作目錄下,vi 5301.html新建一個含有表單的html,所以可以編寫一個簡單的登錄頁面,並使用JavaScript來編寫一個驗證用戶名、密碼的規則,如果輸入的用戶名或者密碼為空時,就彈出相應的對話框。具體代碼如下
  • 前端代碼(html+js)

  • 網頁效果:

Web後端:MySQL基礎

  • 既然要登陸並驗證要涉及到到後臺數據庫,MySQL就是一個數據庫管理系統,MySQL是開放的並且免費
  • 先輸入/etc/init.d/mysql start指令開啟mysql服務,輸入mysql -u root -p,並根據提示輸入密碼,[email protected](但我的密碼很奇怪,居然為空。。。),進入MySQL,輸入時註意有無分號:

  • 對密碼進行修改:輸入use mysql;,選擇mysql數據庫;輸入update user set password=PASSWORD("新密碼") where user=‘root‘;

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

  • 接著輸入quit退出MySQL,重新進入,使用新密碼登錄成功,說明修改成功:

  • 輸入create database 庫名;建立一個數據庫;使用show databases;查看存在的數據庫;使用use 庫名;使用數據庫:

  • 輸入create table 表名 ;建立數據表,使用show tables可以查看存在的數據表:

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

  • MySQL中增加新用戶,輸入grant select(insert,update,delete) on 數據庫.* to [email protected] identified by "密碼";指令,增加新用戶成功:

Web後端:PHP基礎

  • PHP是一種通用開源腳本語言,PHP將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
  • 在/var/www/html目錄下新建5301.php

  • 利用PHP和MySQL結合之前編的登錄網頁進行用戶身份認證,這裏可以參考老師給的代碼編寫login.php,代碼如下:

  • php代碼

  • 其中127.0.0.1是本機地址,root是MySQL的用戶名,zjx5301是我之前設置的登錄密碼,zjx_test是數據庫的庫名。

  • 先將之前編的登錄網頁的代碼中form的action屬性改成5301.php,在瀏覽器中輸入localhost:80/5301.html訪問登錄頁面:

  • 在登錄頁面中輸入數據庫中存有的用戶名和密碼並點擊登錄進行用戶認證,如果登錄成功:

  • 登錄失敗:

SQL註入

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

  • 在用戶名輸入框中輸入‘ or 1=1#,密碼隨便輸入,這時候的合成後的SQL查詢語句為select * from zjxtable where username=‘‘ or 1=1#‘ and password=‘‘,#相當於註釋符,而1=1是永真式,能夠成功登陸:

  • 還可以通過SQL註入將用戶名和密碼保存在數據庫中。修改一下之前的代碼,mysqli->query($query_str))

  • 改成mysqli->multiquery($querystr))便能實現執行多個sql語句,接著在用戶名輸入框中輸入‘;insert into zjxtable values(‘wsc‘,‘5331‘);#,接著登錄,出現如下所示頁面:

  • 我們可以在數據庫中查詢一下是否添加成功:

  • 使用新插入的用戶名和密碼進行登錄,登錄成功:

XSS攻擊測試

    • XSS攻擊:跨站腳本攻擊。XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。
    • 測試,在用戶名輸入框中輸入技術分享20145215讀取/var/www/html目錄下的圖片,密碼隨意輸入

    • 點擊登錄後我們可以看到圖片:

20145301趙嘉鑫《網絡對抗》Exp8 Web基礎