2017-2018-2 20155309南皓芯 Exp8 WEB基礎實踐
基礎問題回答
(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基礎實踐