2018-2019-2 20165315《網絡對抗技術》Exp 8 Web基礎
2018-2019-2 20165315《網絡對抗技術》Exp 8 Web基礎
一、實驗內容
- Web前端HTML
能正常安裝、啟停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML
- Web前端javascipt
理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則
- Web後端
MySQL基礎:正常安裝、啟動MySQL,建庫、創建用戶、修改密碼、建表
PHP基礎:編寫PHP網頁,連接數據庫,進行用戶認證
- 最簡單的SQL註入,XSS攻擊測試
功能描述:
用戶能登陸,登陸用戶名密碼保存在數據庫中,登陸成功顯示歡迎頁面。
二、實驗步驟
1、Web前端HTML
正常安裝、啟停Apache
- kali中已經安裝了Apache2,使用
service apache2 start
啟動Apache服務 - 使用netstat -aptn查看端口信息,看到80端口被Apache2監聽,啟動成功
- 在瀏覽器輸入
127.0.0.1
,如果可以打開Apache的默認網頁,則開啟成功
理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML
GET和POST:
GET:
從指定的資源請求數據,只應當用於取回數據,不應在處理敏感數據時使用
POST:
向指定的資源提交要被處理的數據
- 使用
cd /var/www/html
- 在瀏覽器輸入
127.0.0.1/5315form.html
嘗試打開
2、Web前端javascipt
理解JavaScript的基本功能,理解DOM
JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。JavaScript的源代碼在發往客戶端運行之前不需經過編譯,而是將文本格式的字符代碼發送給瀏覽器由瀏覽器解釋運行。
由三部分組成:
- ECMAScript,描述了該語言的語法和基本對象
- 文檔對象模型(DOM),描述處理網頁內容的方法和接口
- 瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和接口
功能:
- 嵌入動態文本於HTML頁面
- 對瀏覽器事件做出響應
- 讀寫HTML元素
- 在數據被提交到服務器之前驗證數據
- 檢測訪客的瀏覽器信息
- 控制cookies,包括創建和修改等
- 基於Node.js技術進行服務器端編程
DOM簡介:
文檔對象模型(Document Object Model,簡稱DOM),是W3C組織推薦的處理可擴展置標語言的標準編程接口。它是一種與平臺和語言無關的應用程序接口(API),它可以動態地訪問程序和腳本,更新其內容、結構和www文檔的風格(目前,HTML和XML文檔是通過說明部分定義的)。文檔可以進一步被處理,處理的結果可以加入到當前的頁面。DOM是一種基於樹的API文檔,它要求在處理過程中整個文檔都表示在存儲器中。
編寫JavaScript驗證用戶名、密碼的規則
- 在任務一編程的基礎上,加上判斷用戶名和密碼是否為空的JavaScript語句
- 當用戶名或密碼為空的時候,彈出警告框
3、Web後端
MySQL基礎:正常安裝、啟動MySQL,建庫、創建用戶、修改密碼、建表
- kali相應目錄下有數據庫服務,輸入
/etc/init.d/mysql start
開啟MySQL服務
- 輸入
mysql -u root -p
使用root權限進入,密碼默認是password
- 輸入
use mysql
進入Mysql目錄 - 輸入
update user set password=PASSWORD("新密碼") where user=‘root‘;
,修改密碼 - 輸入
flush privileges;
,更新權限
- 輸入
exit
退出數據庫,使用新的密碼登錄 - 輸入
create database 數據庫名稱;
建立數據庫 - 使用
show databases;
查看存在的數據庫
- 使用
use 數據庫名稱;
使用我們創建的數據庫 - 使用
create table 表名 (字段1,字段2 ···);;
建立數據庫表,並設置字段基本信息 - 使用
show tables;
查看表信息
- 使用
insert into 表名 values(‘值1‘,‘值2‘,‘值3‘...);
插入數據 - 使用
select * from 表名;
查詢表中的數據
- 使用
grant select,insert,update,delete on 數據庫.* to 新用戶名@登錄主機 identified by "新密碼";
在MySQL中增加新用戶
- 增加新用戶後,使用新的用戶名和密碼進行登錄
編寫PHP網頁,連接數據庫,進行用戶認證
- 在/var/www/html目錄下編寫一個PHP文件
5315php.php
,利用PHP和MySQL,結合之前編寫的登錄網頁進行登錄身份認證
- 在瀏覽器輸入127.0.0.1/5315form.html訪問自己的登錄界面
- 輸入正確用戶名密碼後跳轉到PHP界面
4、最簡單的SQL註入,XSS攻擊測試
功能描述:用戶能登陸,登陸用戶名密碼保存在數據庫中,登陸成功顯示歡迎頁面。
(1)SQL註入
SQL註入漏洞是指在Web應用對後臺數據庫查詢語句處理存在的安全漏洞。也就是,在輸入字符串中嵌入SQL指令,在設計程序中忽略對可能構成攻擊的特殊字符串的檢查。後臺數據庫將其認作正常SQL指令後正常執行,可能實現對後臺數據庫進行各種操作,甚至造成破壞後臺數據庫等嚴重後果。
- 編寫php頁面的時候我們直接將輸入的特殊字符與查詢語句進行連接就可以進行SQL註入攻擊了
- 輸入框中鍵入
‘or 1=1 --
,此時查詢語句為select * from users where name=‘‘ or 1=1 --‘and password=‘1‘;
,其中“--”在MySQL代表註釋,查詢語句實際為select * from users where name=‘‘ or 1=1
,這個條件恒成立,因此數據庫不會報錯並且提交,可以看到連接成功
(2)XSS攻擊
XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中,簡單說就是在網站任何接受正常文本輸入的地方,輸入Javascript腳本,並讓腳本執行。
- 將一張圖片放在/var/www/html目錄下
- 在用戶名輸入框輸入
<img src="5315.jpg" />
,密碼隨意,就可以讀取圖片
- 同理將一個文本文件放在/var/www/html目錄下輸入
<a href="5315.txt">open test</a>
,密碼隨意,我們就可以直接打開該文本文件
三、實驗中出現的問題
- 第一次啟動Apache時,出現了如下圖的報錯
解決過程:
應該是內存被別的進程占用了,使用指令systemctl daemon-reexec
將你的內存占用釋放就行了
- 完成任務3的編寫PHP代碼時,出現了如下圖跳轉不到php頁面的問題
解決過程:
這是因為我直接從文件中打開了5315form.html
,導致其跳轉也是跳轉到文件路徑的5315php.php
,從127.0.0.1/5315form.html
訪問就沒有問題了
- 完成任務3的編寫PHP代碼時,出現了沒有welcome顯示的問題
解決過程:
這是由於沒有進入5315sql這個數據庫的原因,在代碼中加入如下代碼就可以了。
# $query_str1="use 5315sql;";
# if ($result = $mysqli->query($query_str1))
# echo"<br>Success into database!";
- 完成任務四的XSS攻擊時,無法顯示圖片
解決過程:
php代碼中沒有輸出用戶名,加上echo $uname;
就可以了~
四、實驗總結
1、基礎問題回答
- 什麽是表單
表單是用來收集輸入的數據的,表單由三個部分組成:
表單標簽:這裏面包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法
表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等
表單按鈕:包括提交按鈕、復位按鈕和一般按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還可以用表單按鈕來控制其他定義了處理腳本的處理工作
- 瀏覽器可以解析運行什麽語言。
瀏覽器可以解析HTML,PHP,JavaScript,XML,Python,ASP等腳本語言
- WebServer支持哪些動態語言
主要支持ASP、JSP、PHP三種動態網頁語言。
ASP全名"Active Server Pages",是一個WEB服務器端的開發環境,ASP采用腳本語言VBScript(Java script)作為自己的開發語言
PHP全名"Hypertext Preprocessor"是一種跨平臺的服務器端的嵌入式腳本語言。它大量地借用C,Java和Perl語言的語法,並融合PHP自己的特性,使WEB開發者能夠快速地寫出動態產生頁面
JSP全名"Java ServerPage",可以在Servlet和JavaBean的支持下,完成功能強大的站點程序
2、實驗感想
這次實驗對我來說比前幾次的要熟悉很多,像前端後臺編程這些知識,在上學期的網絡安全編程基礎中已大致學習過,而數據庫的知識在去年的Java課程中也已有所了解。而本次實驗在原本的網頁編程基礎上增加了很多如php、數據庫連接的功能,讓我們直觀地體會到一個網站運行的過程中參數的傳遞和應用,更明白網頁攻擊的原理與過程。要想做一個完全安全的網頁要考慮很多,數據庫參數的連接、字符串等都要進行一些特殊的處理才能真正達到安全的需要。
2018-2019-2 20165315《網絡對抗技術》Exp 8 Web基礎