20155311《網絡對抗》Web基礎
20155311《網絡對抗》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,新建一個gzy001.html文件,編寫一個含有表單能實現輸入用戶名、密碼實現登錄的html。
- 打開瀏覽器訪問localhost:80/gzy001.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(
useridINT NOT NULL COMMENT ‘‘,
usernameVARCHAR(45) NULL COMMENT ‘‘,
passwordVARCHAR(256) NULL COMMENT ‘‘,
enabledVARCHAR(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授予任何人讀,寫,運行的權限,終於功夫不負有心人,圖片順利顯示了
實驗總結與體會
前期很多之前劉念老師的課程有很多涉獵,所以做起來感覺不是特別卡頓,一開始也是自己敲網頁html代碼,雖然確實low但畢竟都是自己敲出來的html,自己敲出來的JavaScript,運行出來的時候還是很開心的,後來看到一個學長代碼裏有更加美觀的html,於是就進行了學習和更改,PHP部分其實挺難的,畢竟註入攻擊需要更改代碼裏的很多內容,因為可以借鑒學長的很多代碼這就節省了很多的時間,並且也學到了很多。最後遇到了一個竟然是世紀難題一樣的東西,其實是我一開始把他想復雜了,直接就想到了apache2的權限,對apache的配置文件apache2.conf一頓更改,也一直在關了apache再重啟apache去嘗試
快要放棄了準備了這張截圖表示自己實在解決不了這個問題,忙活了一下午,最後才靈光一閃,想到了電腦本身的權限問題,終於是解決了這可能其實根本就不難的問題,不輕言放棄才是真道理。實驗磕磕絆絆很正常,但是在解決這些問題的過程中我們不僅學到了知識還明白了許多人生的道理。僅以下圖作為本博客結尾
20155311《網絡對抗》Web基礎