1. 程式人生 > ># 20155337《網絡對抗》Web基礎

# 20155337《網絡對抗》Web基礎

sql基礎 sql註入 page pda into html script 問題 tar

20155337《網絡對抗》Web基礎

實驗過程

Web前端:HTML

  • 使用netstat -aptn查看80端口是否被占用(上次實驗設置為Apache使用80端口),如果被占用了就kill 原進程號(由於我上周虛擬機掛起沒有關閉所以只是演示殺死了80進程,重新打開了Apache),如果空閑就用apachectl start開啟Apache,然後再次用netstat -aptn查看端口占用情況。

  • 在kali的火狐瀏覽器上輸入localhost:80測試apache是否正常工作(我的虛擬機正常顯示上次實驗設定的釣魚網站google網頁)。

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

  • 打開瀏覽器訪問localhost:80/qiaolei001.html,出現剛才編寫的HTML頁面。

  • 點擊會跳轉,但是因為我還沒有設置跳轉頁面login.php,所以會出現如下錯誤提示:

Web前端:javascript

  • 用JavaScript來編寫一個驗證用戶名、密碼的函數,當其為空時提示錯誤信息,把它和前面的qiaolei001.html合起來形成一個新的HTML網頁qiaolei002.html。

Web後端:MySQL基礎

  • 用/etc/init.d/mysql start開啟sql服務。

  • 輸入mysql -u root -p用賬號root登錄,並根據提示輸入對應密碼,我的MySQL默認密碼就是直接回車,一直沒有理解YES的意思,最後終於在直接敲回車之後進入MySQL。

  • 用show databases;查看基本信息(友情提示此命令裏包括英文分號)。

  • 修改MySQL的root用戶密碼可以進行如下步驟

  • 用use mysql;,選擇mysql數據庫。
  • 用select user, password, host from user;,查看mysql庫中的user表中存儲著用戶名、密碼與權限。

  • 輸入UPDATE user SET password=PASSWORD("新密碼") WHERE user=‘root‘;更改密碼。
  • 用flush privileges;進行更新。

  • 重新登錄驗證密碼更改成功

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 ‘‘);
  • 輸入use 庫表名使用剛建的庫表。

  • 輸入insert into users(userid,username,password,enabled) values(ID號,‘用戶id‘,password("用戶密碼"),"TRUE");添加新用戶。

  • 輸入show databases; ,查看新建庫表的信息

PHP測試

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

    <?php
    echo ($_GET["A"]);
    
    include($_GET["A"]);
    
    echo "php page 5305!<br>";
    ?>

    2.用瀏覽器打開localhost:80/test.php,可以看見如下界面,測試成功

PHP+MySQL實現登錄網頁編寫

打開之前的登錄頁面設置編寫的文件夾/var/www/html,輸入vim login.php(因為我之前編寫html代碼已經設置了跳轉頁面login.php),通過PHP實現對數據庫的連接

看到了一個學長很美的登錄頁面模板,於是就用了新的登錄html,輸入localhost:80/prettylogin.html訪問登錄頁面,但是跳轉依舊是login.php

在其中輸入正確的用戶名和密碼(即自己所新建數據庫表中存在的新加入的用戶和密碼),顯示登陸成功。

在其中輸入錯誤的用戶名和密碼(即新建數據庫表中不存在的),顯示登錄失敗。

最簡單的SQL註入

  • 在用戶名輸入框中輸入‘ or 1=1#,密碼隨便輸入,竟然會顯示登陸成功!

這是因為,這時候‘ or 1=1#合成後的SQL查詢語句為select * from lxmtable where username=‘‘ or 1=1#‘ and password=md5(‘‘),#相當於註釋符,會把後面的內容都註釋掉,1=1是永真式,所以這個條件肯定恒成立,一定會登陸成功。

  • 在用戶名框中輸入

‘;insert into users(userid,username,password,enabled) values(66,‘22‘,password("20155305"),"TRUE");#
通過SQL註入將用戶名和密碼保存在數據庫中,這就相當於是

SELECT * FROM users WHERE username=‘‘; insert into users(userid,username,password,enabled) values(66,‘22‘,password("20155305"),"TRUE");

這時數據庫中已經有了新輸入的這個用戶和密碼。

使用這個新輸入的這個用戶和密碼在網頁中登錄就沒有問題了。

XSS攻擊測試

XSS表示Cross Site Scripting(跨站腳本攻擊),通過插入惡意腳本,實現對用戶瀏覽器的控制。
在/var/www/html目錄下事先保存一個圖片文件222222.jpg,然後在登錄網頁的用戶名窗口中輸入技術分享圖片20155305

這時候我的虛擬機出現了意外,圖片沒有顯示,點擊view image提示forbidden禁止訪問權限不夠

我百度了好久,先進行了apache2的權限更改,在/etc/apache2/apache2.conf裏把denied更改為granted,然而沒有用,也就是說不是apache權限的問題導致我無法訪問該文件夾下的圖片

後來我就猜測可能是我電腦本身的權限不能讓我訪問這個文件夾下的圖片,先嘗試了一種提高權限的方法沒有用

再嘗試一種提權方式,chmod 777授予任何人讀,寫,運行的權限,終於功夫不負有心人,圖片順利顯示了

# 20155337《網絡對抗》Web基礎