20155317王新瑋《網絡對抗技術》實驗8 WEB基礎實踐

20155317王新瑋《網絡對抗技術》實驗8 WEB基礎實踐

1、實驗準備

1.0 實驗目標和內容

  1. Web前端HTML。能正常安裝、啓停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。
  2. Web前端javascipt。理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則。
  3. Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表
  4. Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證
  5. 最簡單的SQL注入,XSS攻擊測試

2.0 實驗問題的回答

(1)什麼是表單

表單就是網頁上的表格,能夠負責數據採集功能。例如輸入文本,密碼,進行選擇等等。php

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

  • 超文本標記語言:HTML
  • 可擴展標記語言:XML
  • 腳本語言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等

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

  • ASP語言
  • PHP語言
  • JSP語言

2、Web前端HTML

首先開啓apache,同上個實驗同樣,西安關閉80端口,再開啓。html

 

能夠看到咱們用到的是80端口,接着對其apache進行測試,是否可用前端

 

輸入localhost:80。進入到了上節課咱們用到的網頁中。java

接下來進入咱們的編輯目錄 /var/www/htmlmysql

新建一個wangxinwei2.html的文件,並對其進行編輯:web

 

 

寫一個簡單的網頁,其中有可輸入文字的框和可選框sql

 

 

 

在火狐瀏覽器中輸入localhost:80/wangxinwei2.html,打開該網頁。進入到了我剛編寫的網頁中。數據庫

我一共實現了三種html的表單動能,文本框的填寫,密碼的填寫,選項的選擇。apache

對於POST與GET的設定,這裏我先嚐試的是,POST。POST用以向服務器發送數據,按照放在form中的數據體,傳到action所指向URL。django

 

編寫一個PHP,其中的代碼含義爲,將網頁已經寫好的元素 username 和 password,傳到php的頁面中並顯示出來。

而後在html中的form方法裏,action="login.php"

測試:

 

 

成功

3、Web後端:MySQL基礎

實驗步驟爲:

  • 啓動數據庫
  • 建立一個新的數據庫
  • 創建一張新表 wxw,有username和password兩個字段,最長各20個字符
  • 添加記錄
  • 數據庫表

 

使用命令/etc/init.d/mysql start打開mysql服務

輸入mysql -u root -p,這裏要注意「-」的輸入

根據提示輸入密碼,password,進入MySQL:

 

MySQL建表建庫

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(ID號,'用戶id',password("用戶密碼"),"TRUE");添加新用戶。

 

 

輸入show databases; ,查看新建庫表的信息

 

4、Web後端:編寫PHP網頁

前端網頁直接用上面編寫好的表單,用POST推上去的。名稱爲haha.html

接下來咱們須要作的就是編寫一個後臺鏈接到數據庫,實現從數據庫中調用數據,來驗證用戶輸入的用戶名和密碼是否爲已註冊的。

我編寫的PHP代碼爲:

<?php $uername=($_POST["username"]); $password=($_POST["password"]); echo $username; $query_str="SELECT * FROM users WHERE username='{$username}' and password=password('{$password}');"; $mysqli = new mysqli("127.0.0.1", "root", "20155317", "5317WXW"); /* 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(); ?>

編輯好前端wangxinwei2.html和後臺以後,用火狐瀏覽器打開前端,並輸入用戶名和密碼:

先輸入一個錯誤的:

 

 

很顯然登陸失敗:

 

 

 

輸入正確的用戶名和密碼以後,成功登陸:

 

 

5、簡單的SQL注入

簡單的測試

SQL注入,就是把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令

作一個簡單的SQL注入,就是簡單地將命令輸入用戶名框。

輸入' or 1=1#

根據咱們編寫的php代碼,SQL語句就會變爲:

select * from users where username='' or 1=1#' and password=password(XXX);

永遠爲真,就能夠直接登陸。

 

 

登陸成功

 

進一步,經過SQL注入將用戶名和密碼保存在數據庫中

用於插入的用戶名爲"2222",密碼爲 20155317

因此用到的語句就是:

';insert into users(username,password) values('22222',password("5317"));#

在用戶名框中輸入。

 

咱們查看一下數據庫:

注入成功

而後成功登陸了

 

 

 

 

6、XSS攻擊測試

跨站腳本攻擊是新型的「緩衝區溢出攻擊「

就是將惡意代碼例如jsp代碼植入到提供給其它用戶使用的頁面中。

 

這是咱們要用到的代碼,代碼的功能就是直接讀取/var/www/html目錄下的圖片

而後咱們將測試的圖片拷到html目錄下

在火狐瀏覽器中測試:

 

實驗成功

7、實驗感想

本次的實驗我認爲有必定的難度,上學期在劉念老師的課中練習過網站的編寫,可是感受開始的時候遺忘度仍是比較大的,不過最終也完成了實驗,懂得了一些網站製做時候的漏洞,也是收穫頗多!

相關文章
相關標籤/搜索