1. 程式人生 > >2017-2018-2 20155309南皓芯 Exp8 WEB基礎實踐

2017-2018-2 20155309南皓芯 Exp8 WEB基礎實踐

多個 端口 sci select sub sta include 所有權限 sql語句

基礎問題回答

(1)什麽是表單

表單在網頁中主要負責數據采集功能。一個表單有三個基本組成部分:

表單標簽:這裏面包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。

表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等。

(2)瀏覽器可以解析運行什麽語言。
html,css,javascript等腳本語言

(3)WebServer支持哪些動態語言
ASP語言,PHP語言和JSP語言

實驗過程記錄

Apache

(一)環境配置

apache是kali下的web服務器,通過訪問ip地址+端口號+文件名稱可以打開對應的網頁。

輸入命令vi /etc/apache2/ports.conf更改apache2

的監聽端口號;

輸入命令apachectl start打開apahce,並使用netstat -aptn查看端口號,確認apache正確開啟,如下圖所示:

技術分享圖片

技術分享圖片

在kali下的firefox輸入http://127.0.0.1:5309可以看見上一次實驗克隆的網頁

技術分享圖片

(二)前端編程

使用cd /var/www/html在/var/www/html目錄下編輯test.html

技術分享圖片

技術分享圖片

在存盤的時候出現了這種錯誤,我們按照網上所說的強制存盤即可。

技術分享圖片

之後在firefox打開網頁即可,我們會看到自己所做的一個簡單的頁面

技術分享圖片

2.Web前端:
javascipt基礎

JavaScript是一種屬於網絡的腳本語言,已經被廣泛用於Web應用開發,常用來為網頁添加各式各樣的動態功能,現代所有的web都是使用javascipt來編寫完成的。

通常Javascipt腳本是通過嵌入在HTML中來實現自身功能的。

直接在之前的基礎上加上如下代碼:

<script language="javascript">
function check(Form){
                 var Username =Form.user.value;
                 var pwd =Form.pw.value;
                  if((Username == "")||(pwd == ""))//如果用戶名為空

                  {
                        alert("用戶名或密碼不能為空");
                        return false;
                  }
  if (pwd.length > 16 || pwd.length < 6)
  {
    alert("密碼長度應該在 6 - 16 位");
    return false;
  }
  Form.submit();
}
</script>

之後我們可以看到網頁變成了這種形式

技術分享圖片

PHP測試

新建一個PHP測試文件vi /var/www/html/test.php,輸入如下

<?php
    echo ($_GET["A"]);
    
    include($_GET["A"]);

    echo "php page 5309!<br>";
?>

技術分享圖片

技術分享圖片

MySQL基礎

開啟mysql/etc/init.d/mysql start

mysql -u root -p以root身份進行登錄
之後會提醒你輸入密碼,但是由於是用的老師的虛擬機,所以我們並不知道密碼,這樣我們參考同學的博客找到了解決辦法。

技術分享圖片

技術分享圖片

鍵入show databases;查看基本信息,註意一定要加分號哦,數據庫裏以分號作為一個語句的結束。

技術分享圖片

修改密碼,首先選擇MySQL,鍵入use mysql;,輸入update user set password=PASSWORD("新密碼") where user=‘root‘;修改密碼,進行更新flush privileges;

技術分享圖片

輸入quit退出登錄,再次鍵入mysql -u root -p,測試新密碼對不對,ok,成功登錄。

技術分享圖片

建庫建表

首先輸入這兩條命令:

create database nhx1;

use nhx1;

技術分享圖片

使用create table表名 (字段設定列表);建立數據表,數據表是數據庫中一個非常重要的對象,一個數據庫中可能包含若幹個數據表;使用show tables;查看存在的數據表:

create table nhx1table (userid VARCHAR(100),username VARCHAR(45),password VARCHAR(256),enabled VARCHAR(5));

技術分享圖片

在表中添加內容:

insert into nhx1table(userid,username,password,enabled) values(1,‘20155309‘,‘123456‘,"TRUE");

使用select * from 表名;查詢表中的數據,*表示查詢所有的參數信息,也可以指定某一參數比如username來進行查詢。

技術分享圖片

增加新用戶賦予所有權限,鍵入grant all on nhx1.* to pc@localhost identified by ‘20155309‘;,其中grant all賦予所有的權限,pc.*數據庫 pc中所有的表,@localhost 在本地電腦上的 mysql服務器,identfified by ‘password‘設置密碼。

技術分享圖片

鍵入mysql -u pc -p使用新用戶進行登錄,驗證新用戶是否建立成功,登錄成功,說明新建用戶成功。

Web後端:編寫PHP網頁

在上面的實驗中我們已經做過了PHP的測試。

所以我們直接編寫網頁的代碼即可

技術分享圖片

在這裏我們需要了解的是 127.0.0.1是本機的ip root是用戶名,20155309是我所設的密碼,nhx1是數據庫的名稱

技術分享圖片

技術分享圖片

點擊login

技術分享圖片

SQL註入

在用戶名輸入框中輸入‘ or 1=1#,密碼隨便輸入,這時候的合成後的SQL查詢語句為
select * from lrttable where username=‘‘ or 1=1#‘ and password=‘‘

技術分享圖片

可以通過SQL註入在數據庫中插入一條偽造的用戶名和密碼。

首先修改後端的PHP代碼,將if ($result = $mysqli->query($query_str))這條判斷語句改成if ($result = $mysqli->multi_query($query_str))使得允許多條sql語句執行,這樣就可以實現執行多個sql語句,接著在用戶名輸入框中輸入‘;insert into pc values(‘100‘,‘53‘,‘53‘,"true");#,隨便輸入一個密碼,接著登錄,出現如下所示。

技術分享圖片

將PHP改回去,再次用新插入的用戶進行登錄,登錄成功。

技術分享圖片

XSS攻擊

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

一共有三種類型:

1.本地利用漏洞,這種漏洞存在於頁面中客戶端腳本自身。也就是A發給B 一個鏈接B打開了那麽A的具有漏洞的HTML頁面包含了在B電腦本地域執行的JavaScript中。

2.反射式漏洞,這種漏洞和類型A有些類似,不同的是Web客戶端使用Server端腳本生成頁面為用戶提供數據時,如果未經驗證的用戶數據被包含在頁面中而未經HTML實體編碼,客戶端代碼便能夠註入到動態頁面中,這個會牽扯到一有個網站擁有者A和用戶B以及黑客C。

3.直接威脅用戶個體,而類型B和類型C所威脅的對象都是企業級Web應用。存儲式漏洞,該類型是應用最為廣泛而且有可能影響到Web服務器自身安全的漏洞,黑客將攻擊腳本上傳到Web服務器上,使得所有訪問該頁面的用戶都面臨信息泄漏的可能,其中也包括了Web服務器的管理員。

類型1直接威脅用戶個體,而類型2和3所威脅的對象都是企業級Web應用。

在用戶名輸入框中輸入<img src="1.png" />1111</a>讀取/var/www/html目錄下的圖片,嘗試了多張圖片,上網進行搜索,並不能獲取到圖片....

感覺這個與自己本身的kali機有關系

技術分享圖片

實驗體會

這次的實驗與劉念老師的課程可以說是緊密相關的,在做實驗的過程中,我們可以溫習java前端的知識,說句實話,在做的過程中,我們對上學期的知識可以了解的更加深入,並且該實驗很有趣味性值得我們學習。

2017-2018-2 20155309南皓芯 Exp8 WEB基礎實踐