20145318《網絡對抗》Web應用

20145318《網絡對抗》Web應用

基礎問題回答

  • (1)什麼是表單
    •   在網頁中負責信息採集,在網頁中用戶輸入信息,經過表單可以提交到後臺進行相應的處理
  • (2)瀏覽器能夠解析運行什麼語言
    •   支持HTML(超文本標記語言)、XML(可擴展標記語言)以及Python、PHP、JavaScript、ASP等衆多腳本語言。
  • (3)WebServer支持哪些動態語言
    •   ASP、PHP、JSP、Python、JavaScript、Ruby等javascript

實踐過程記錄

Apachephp

  • 先經過apachectl start命令開啓Apach,使用netstat -aptn命令查看端口占用
  • 由於端口號80已經被佔用(上次實驗設置的),因此先修改/etc/apache2/ports.conf裏的端口爲5318後從新開啓:html

  • 能夠在瀏覽器中輸入localhost:5318來檢查是否正常開啓,這裏能夠看到打開了上次實驗的網頁,開啓正常:

簡單的網頁編寫java

  • 訪問Apache工做目錄cd /var/www/html,新建一個5318.html文件
  • 編寫一個含有表單的htmlmysql

  • 打開瀏覽器訪問:localhost:5318/5318.html,成功出現以下界面

  • 在上面的文本框內鍵入幾個字母,而後點擊確認按鈕數據會傳送到 "html_form_action.php" 的頁面,因爲沒有對此頁面進行編輯,出現的是404

 

javascript相關web

  • 相關概念:JavaScript是一種普遍用於客戶端Web開發的腳本語言,經常使用來給HTML網頁添加動態功能,好比響應用戶的各類操做。
  • 文檔對象模型(Document Object Model,簡稱DOM,是W3C組織推薦的處理可擴展標誌語言的標準編程接口。
  • 編寫驗證用戶名和密碼的規則:(好比用戶名和密碼不能爲空)sql

<script>
function nameText(){
var name= document.getElementByIdx_x ("username");
    var divID= document.getElementByIdx_x ("divName");
    divID.innerHTML="";
    if(name.value==""){
         divID.innerHTML="用戶名不能爲空";
         return false;
    }
}
function passText(){
var pass= document.getElementByIdx_x ("password");
    var divIP= document.getElementByIdx_x ("divPass");
    divIP.innerHTML="";
    if(pass.value==""){
         divIP.innerHTML="密碼不能爲空";
         return false; 
    }
}
</script>

PHP測試數據庫

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

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

include($_GET["A"]);

echo "php page 5212!<br>";
?>
  • 用瀏覽器打開localhost:5318/test.pgp,能夠看見以下界面,測試成功

 

 

MySQL基礎編程

  • 使用命令/etc/init.d/mysql start打開mysql服務
  • 輸入mysql -u root -p,並根據提示輸入密碼,默認密碼爲p@ssw0rd,進入MySQL:

  • 可使用命令show databases;能夠查看基本信息(分號不能夠漏掉,分號表明命令的結束):

  • 能夠經過以下方式更改密碼:

·輸入use mysql;,選擇mysql數據庫

·輸入select user, password, host from user;,mysql庫中的user表中存儲着用戶名、密碼與權限

·輸入UPDATE user SET password=PASSWORD("新密碼") WHERE user='root';

·輸入flush privileges;,更新權限

·輸入quit退出

  •  從新登陸就能夠發現密碼修改爲功
  • 在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 '');

  • 向表中添加用戶

  • 如今再查看信息就能夠看到新建表:

php+mysql編寫網頁

  • /var/www/html文件夾下輸入vim login.html,編寫登陸網頁

  • 輸入vim login.php,經過php實現對數據庫的鏈接

  • 在瀏覽器中輸入localhost:5318/login.html訪問本身的登錄頁面

  • 在登陸頁面中輸入數據庫中存有的用戶名和密碼並點擊提交進行用戶認證登陸成功,輸入數據庫中沒有的就會認證失敗

 

 

SQL注入

  • 構造SQL語句:在用戶名輸入框中輸入' or 1=1#,密碼隨便輸入,這時候的合成後的SQL查詢語句爲select * from users where username='' or 1=1#' and password=md5('')

如下的兩句sql語句等價:
select * from users where username='' or 1=1#' and password=md5('')
select * from users where username='' or 1=1

  • 由於1=1永遠是都是成立的,即where子句老是爲真,因此可以成功登陸

  • 經過SQL注入將用戶名和密碼保存在數據庫中

    ';insert into users(userid,username,password,enabled) values(5318,'145318',password("145318"),"TRUE");#

  • 在登陸頁面輸入用戶名145318密碼145318,成功

 

 

XSS攻擊

  • XSS攻擊:跨站腳本攻擊(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆。故將跨站腳本攻擊縮寫爲XSS。XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。好比這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞因爲被駭客用來編寫危害性更大的phishing攻擊而變得廣爲人知。對於跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的「緩衝區溢出攻擊「,而JavaScript是新型的「ShellCode」。
  • 進行一個簡單的測試,在用戶名輸入框中輸入<img src="20145318.jpg" />20145318</a>讀取/var/www/html目錄下的圖片:

  • 點擊登陸後咱們能夠看到圖片:

 

 

發帖和會話管理的實現

    • 咱們能夠利用PHP實現會話管理,這部分實踐能夠詳細參考ltc同窗的博客與代碼。
      將代碼依舊放在/var/www/html目錄下,在瀏覽器中輸入http://localhost:5318/logIn.php,進行登陸:

  • 登陸成功後如圖所示:

 

 

  • 點擊start a new post!發帖,進入以下界面:

  • 提交以後跳轉到以下界面,能夠選擇查看發過的帖子、繼續發帖、返回或者退出登陸:

 

  • 點擊CHECK查看發過的帖子,可是卻什麼內容都沒有,因爲這個操做是經過從data.txt文件中讀取以前發帖時保存的記錄來查看發帖內容,可是在/var/www/html目錄下根本沒有找到這個文件,這就說明以前建立也沒有成功,後面發現/var/www/html底下文件默認的都是屬於root的,其餘用戶沒有權限進行操做,因此咱們能夠先使用touch data.txt建一個data.txt文件,再對該文件進行加權:

  • 再次發帖查看,能夠成功顯示以前的發帖歷史:

相關文章
相關標籤/搜索