20155233 《網絡對抗》 Exp8 Web基礎

實驗內容

  • Web前端HTMLphp

  • Web前端javascipthtml

  • Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表前端

  • Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證java

  • 最簡單的SQL注入,XSS攻擊測試mysql

實驗過程

Web前端HTML

  • 輸入命令systemctl start apache2打開apahce,並查看端口號,確認apache開啓:

  • 在kali瀏覽器中輸入127.0.0.1:5233,如圖所示,說明咱們Apache正常工做:

  • 進入Apache工做目錄/var/www/html,新建一個lgl1.html文件,編寫一個含有表單能實現輸入用戶名、密碼實現登陸的html:

Web前端:javascipt基礎

  • 咱們可使用JavaScript來編寫一個驗證用戶名、密碼的規則,直接在以前的代碼上進行修改,重命名爲lgl2.html

Web後端:MySQL基礎

  • 簡單的應用:開啓mysql,並更改用戶名密碼;創建庫表,並插入數據;實現網頁和數據庫的鏈接;web

  • 輸入/etc/init.d/mysql start打開mysql服務,輸入mysql -u root -p,以root身份登陸,根據提示輸入密碼,默認密碼爲p@ssw0rd,進入MySQL;sql

  • show databases;查看基本信息;數據庫

  • 從新輸入mysql -u root –p,使用新密碼登陸;apache

  • 建立數據庫和新表。命令以下:
create database lgl;
use lgl;
create table lgl (username VARCHAR(20),password VARCHAR(32),telephone VARCHAR(11));
  • 使用insert into 表名 values('值1','值2','值3'...);插入數據;使用select * from 表名;查詢表中的數據:

Web後端:PHP網頁

  • /var/www/html目錄下新建一個test.php測試一下PHP。
<?php
  echo ($_GET["a"]);
  include($_GET["a"]);
  echo "This is lgl php test page!<br>";
?>
  • 瀏覽器打開```localhost:5233/test.php?a=/etc/passwd可看到/etc/passwd文件的內容:

  • 簡單測試完成後,咱們能夠利用PHP和MySQL結合以前編的登陸網頁進行簡單的用戶身份認證,能夠參考老師給的代碼編寫login.php,代碼以下所示:
<?php

$uname=($_POST["username"]);
$pwd=($_POST["password"]);

/* echo $uname; */

$query_str="SELECT * FROM lgl where username='{$uname}' and password='{$pwd}';";

/* echo "<br> {$query_str} <br>";*/

$mysqli = new mysqli("127.0.0.1", "lgl", "123456", "lgl");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
echo "connection ok!";
/* Select queries return a resultset */
if ($result = $mysqli->query($query_str)) {
    if ($result->num_rows > 0 ){
        echo "<br> Wellcome login Mr/Mrs:{$uname} <br> ";
    } else {
        echo "<br> login failed!!!! <br> " ;
    }

    /* free result set */
    $result->close();
}


$mysqli->close();

?>
  • 先將以前編的登陸網頁的lgl2.html代碼中formaction屬性由#改爲login.php,即登陸後跳轉到login.php,再在瀏覽器中輸入localhost:5233/lgl2.html訪問本身的登陸頁面:
    • 登陸成功以下:

    • 登陸失敗以下:

SQL注入

  • 在用戶名輸入框中輸入' or 1=1#,隨便輸入密碼,這時候的合成後的SQL查詢語句爲select * from lgl where username='' or 1=1#' and password=''#至關於註釋符,會把後面的內容都註釋掉,而1=1是永真式,因此這個條件確定恆成立,因此可以成功登錄:

  • 還能夠經過SQL注入將用戶名和密碼保存在數據庫中,首先修改以前編的代碼中if ($result = $mysqli->query($query_str))這條判斷語句爲if ($result = $mysqli->multi_query($query_str)),這樣便能實現執行多個sql語句,接着在用戶名輸入框中輸入';insert into use values('liuer','123456','12345678933');#,拆開來看就是SELECT * FROM lgl WHERE username='';insert into lgl values('liuer','123456','12345678933');,接着登陸:

XSS攻擊

  • 在登陸的用戶名中輸入:<img src="1.gpg" />liu</a>,讀取/var/www/html目錄下的圖片:

基礎問題回答

  • 什麼是表單?後端

    • 答:表單是一個包含表單元素的區域,表單元素是容許用戶在表單中(好比:文本域、下拉列表、單選框、複選框等等)輸入信息的元素,表單在網頁中主要負責數據採集功能,一個表單有三個基本組成部分:表單標籤、表單域、表單按鈕;

表單標籤(

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

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

表單按鈕:包括提交按鈕、復位按鈕和通常按鈕,用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。

  • 瀏覽器能夠解析運行什麼語言?

    • 答:支持HTML(超文本標記語言)、XML(可擴展標記語言)以及Python、PHP、JavaScript、ASP等衆多腳本語言。
  • WebServer支持哪些動態語言?

    • 答:JavaScript、ASP、PHP、Ruby等腳本語言,ASP基於IIS WEB SERVER,是微軟的服務器端腳本技術,PHP基於APACHE WEB SERVER,與ASP有幾分相似,都是一種在服務器端執行的嵌入HTML文檔的腳本語言。

實驗體會

  • 本次實驗原理比較簡單,可是過程比較複雜,相關命令多,要注意方方面面,語法、命令這些都須要你去注意,因此細心是本次實驗的關鍵,數據庫中提到好多命令,這是咱們要去學習的,要記下來,並在之後的學習中用到,還有就是php語法的使用,要去常加練習。
相關文章
相關標籤/搜索