1. 程式人生 > >20145311 王亦徐 《網絡對抗技術》 Web基礎

20145311 王亦徐 《網絡對抗技術》 Web基礎

關閉 ati 填充 加載數據 服務 www java、 例子 int

20145311 王亦徐 《網絡對抗技術》 Web基礎

實驗內容

  • 簡單的web前端頁面(HTML、CSS等)
  • 簡單的web後臺數據處理(PHP)
  • Mysql數據庫
  • 一個簡單的web登陸頁面例子
  • SQL註入、XSS攻擊

基礎問題回答

(1)什麽是表單

  • 表單我覺得主要是用來在網頁中采集數據用的,提供了填寫數據、選擇數據,收集數據並提交給後臺的功能,包括很多種表單元素,例如文本框、下拉框、單選復選框等
  • 百度上說一個表單有三個基本組成部分:表單標簽(form)、表單域(填寫數據)、表單按鈕(提交)

(2)瀏覽器可以解析運行什麽語言。

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

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

  • ASP、JSP、PHP等

實驗總結與體會

本次實驗主要是與web編程有關,這在我們之前的課程中已經學習過一部分,尤其是前端的編寫,利用HTML語言以及CSS語言,後臺的處理我們當時是利用的xml文件以及後臺的java代碼處理表單數據,連接數據庫是利用的jdbc,整個實驗內容還是比較多,有之前web編程那門課的基礎,相對而言還是沒有那麽復雜。後面的攻擊方法SQL註入也說明了要在理解數據庫代碼的情況下才能夠完成攻擊,即讓後臺的程序去執行所填充的一些指令,進而對數據庫進行操作。

實踐過程記錄

Apache

將端口改為80 端口後,利用netstat命令查看占用該端口的進程,關閉改進程後開啟apache服務

技術分享

Web前端

進入到apache的工作目錄下cd var/www/html,vi test.html新建一個含有表單的頁面

簡單寫了一點代碼,沒有加入method處理表單的方法

技術分享

技術分享

用瀏覽器打開這個網頁輸入localhost:test.html

技術分享

其中method裏面的方法主要有兩種:get、post,主要的區別是前者用來從服務器獲得數據,後者用來向服務器提交數據,再有就是post更安全

PHP測試

php感覺就是一種用來寫動態頁面的語言,在本實驗中我們用它來處理表單提交的數據,連接數據庫,並且對數據做出響應(感覺有點起到了以前實驗中xml、jdbc的作用)。

.新建一個PHP測試文件vim test.php

技術分享

在瀏覽器中進行訪問

技術分享

MySQL基礎

現在所有的大型數據幾乎都存儲在數據庫中,可見DB安全的重要性,數據庫安全要用到訪問控制機制

數據庫的具體指令可以自己去查,簡單的增刪查改指令可以記住

啟動數據庫

技術分享

修改數據庫的登錄密碼:

技術分享

技術分享

創建一個新的數據庫

技術分享

建表:wyx

技術分享

增加字段、插入記錄:

技術分享

簡單的實現一個登錄頁面

結合html編寫的頁面和php動態語言:

這裏表單的action是將表單的數據提交給後臺的一個php文件處理,我記得我們以前是利用的jsp文件和xml文件結合來處理的表單數據,可見php語言方便了不少,功能也更加強大

xiaoli.html

技術分享

5311.php:這個就是利用的大家提供的那個代碼

技術分享

最開始的兩句是從前端獲取表單的數據,用於之後與數據庫中的記錄進行比較

與之前的jdbc連接數據庫類似,首先需要加載數據庫的驅動連接上DB,再接著就是利用用戶名密碼登錄數據庫,新建的mysqli即為登錄的一個對象,用於下面執行,再接著是將一條數據庫查詢語句賦值給一個squery_str,用於下面執行,然後比較結果決定能否登陸,最後關閉掉打開的一些對象。

技術分享

技術分享

輸入正確的用戶名密碼(數據庫中有記錄的)即能夠登陸,不正確的則不能成功登陸

後來在windows下嘗試著將登陸界面美化了一下,加上了登陸背景等,具體的也就是前端的一些html語法

login.html:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>登陸頁面</title>
</head>
<body background="C:\Users\Administrator\Desktop\web\background.jpg"
style=" background-repeat:no-repeat ;background-size:100% 100%;background-attachment: fixed;"text="#68228B" onload="setInterval(‘clock()‘,1000)">
<br><br><br>
<center> <font color="#cc00cc" size="30">登陸界面</font> </center>
<br>
<center>
<form action="login" method="post">
<font color="#cc00cc" size="3">用戶名</font> <input type="text" name = "username" /> <br><br>&nbsp;&nbsp;
<font color="#cc00cc" size="3">密碼</font>&nbsp; <input type="text" name = "password"> <br>
&nbsp;&nbsp;<center><input type = "submit" value = "登錄"></center>
</form>
</center>

</body>
</html>

技術分享

SQL註入

SQL註入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令,包括以前見到的在地址欄中輸入一些特殊的命令,通過服務器的反饋信息也能夠獲得後臺數據庫的部分信息。下面就是一個簡單的SQL註入

在用戶名輸入框中輸入‘ or 1=1#,密碼隨便輸入,這時候的合成後的SQL查詢語句為select * from lxmtable where username=‘‘ or 1=1#‘ and password=‘‘,不知道怎麽就這樣解釋了(應該主要還是要去理解後臺的和數據庫的代碼),反正最後這就是一個永真式,就能夠成功登陸。

技術分享

利用SQL註入,像數據庫中增加記錄,從而利用增加的記錄進行登陸

實現對php代碼進行修改,將執行數據庫預計那塊加上一個multi,以便後面在登陸時可以執行多條數據庫指令

技術分享

‘;insert into wyx values(‘break‘,‘5311‘);#,應該又解析成幾條數據庫語句,從而達到了在向數據庫中增加記錄的功能

技術分享

技術分享

可見真的可以添加,之後利用增加的記錄便可以成功登陸

技術分享

XSS攻擊測試

跨站腳本攻擊(Cross Site Scripting),據說跨站腳本攻擊是新型的“緩沖區溢出攻擊“,而JavaScript是新型的“ShellCode”,也就是將惡意代碼例如jsp代碼植入到提供給其它用戶使用的頁面中,從而獲取用戶主機的一些信息,也就是利用了網頁進行了類似的緩沖區溢出攻擊

在username中輸入<img src="dog5311.jpg" />20145311</a> 讀取/var/www/html目錄下的圖片(將一張圖片放在了該目錄下)

技術分享

成功顯示了該目錄下的圖片

技術分享

這樣的話,如果你搭了一個網站,攻擊者利用一些jsp代碼便可以訪問到你網站服務器文件的一些信息,甚至獲得更高的權限

20145311 王亦徐 《網絡對抗技術》 Web基礎