20155330 《網絡對抗》 Exp8 Web基礎
20155330 《網絡對抗》 Exp8 Web基礎
實驗問題回答
什麽是表單
表單可以收集用戶的信息和反饋意見,是網站管理者與瀏覽者之間溝通的橋梁。
一個表單有三個基本組成部分
表單標簽
表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等
表單按鈕:包括提交按鈕、復位按鈕和一般按鈕.
瀏覽器可以解析運行什麽語言
- 超文本標記語言:HTML
- 可擴展標記語言:XML
- 腳本語言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。
- WebServer支持哪些動態語言
- PHP語言、JSP語言。
實驗總結與體會
這次實驗過程中遇到了不少問題,但都解決了,感覺很開心,特別是最後的圖片顯示出來了。通過實驗也感受到對MySQL數據庫的使用比較不熟練,經常會忘記在命令後面加分號啊什麽的。從這次實驗也初步了解了一些web攻擊的基礎知識,在web開發時要註意避免常見的攻擊手段。
實踐過程記錄
(一)環境配置
使用
apache -v
查看本機安裝Apache
的版本狀態。使用
netstat -aptn
查看端口占用情況。使用
vi /etc/apache2/ports.conf
對apache所要占用的端口進行設置,這裏把偵聽端口改為了自己的學號5330。
通過
systemctl start apache2
再次使用
netstat -aptn
查看端口占用(在這之前kill掉了占用其他端口的進程),發現apache2占用5330端口。測試apache是否正常工作:在kali的
firefox
瀏覽器上輸入127.0.0.1:5330
或localhost:5330
(這裏的端口號為/etc/apache2/ports.conf
下設置的Apache監聽端口號,我設置為了自己的學號。localhost指kali的IP地址(這裏我用了回環地址同樣可以測試))。測試結果如下:(二)網頁編寫
前端編程
使用以下命令在
/var/www/html
目錄下編輯測試網頁test.html
。cd /var/www/html touch test.html vi test.html
- 網頁代碼
在
firefox
瀏覽器中輸入網址127.0.0.1:5330/test.html
打開該網頁點擊
login
頁面發生跳轉,但跳轉失敗。原因是還沒有編寫php後端文件。JavaScript
對網頁代碼進行改進,加入JavaScript語句。
- 輸入用戶名,不輸入密碼。提示輸入密碼。
- 輸入密碼,不輸入用戶名。提示輸入用戶名。
- 二者均輸入。成功。
PHP後端
在
/var/www/html
目錄下編輯測試php文件login.php
。<?php echo ($_GET["a"]); include($_GET["a"]); echo "This is lxm php test page!<br>"; ?>
在瀏覽器打開
127.0.0.1:5330/login.php?a=/etc/passwd
可看到/etc/passwd文件的內容(三)MySQL基礎
使用
/etc/init.d/mysql start
命令開啟sql服務。輸入
mysql -u root –p
,並根據提示輸入密碼(默認密碼為p@ssw0rd
),進入MySQL.輸入
show databases;
,查看基本信息- 更改MySQL用戶密碼可以通過如下方式:
- 輸入
use mysql;
選擇mysql數據庫; - 輸入
select user, password, host from user;
,mysql庫中的user表中存儲著用戶名、密碼與權限; - 輸入
UPDATE user SET password=PASSWORD("新密碼") WHERE user=‘root‘;
; - 輸入
flush privileges;
更新權限; - 輸入
quit
退出。
- 輸入
重新輸入
mysql -u root –p
,輸入密碼檢測新密碼能否成功使用,登陸成功。- 在Mysql中建庫建表
create database zy;
建立一個數據庫use zy;
進入數據庫
create table zy (username VARCHAR(20),password VARCHAR(20));
建立一個數據表insert into zy values(‘zy‘,‘5330‘);
添加數據庫的信息
select * from zy;
查看數據庫中內容
新建用戶:
grant select,insert,update,delete on 數據庫.* to 用戶名@localhost identified by "密碼";
將對某數據庫的所有表的select,insert,update,delete權限授予某用戶。退出後,輸入
mysql -u 用戶名 –p
登錄。成功。(四)php+mysql實現登錄網頁編寫
在/var/www/html文件夾下編輯test2.html
<html> <html> <head> <title>test2</title> </head> <body> <form name="login" method="POST" action="login.php"> <table> <tr><td>username:</td><td><input type="text" name="username" onfocus="if (this.value==‘Your name‘) this.value=‘‘;" /></td></tr> <tr><td>password:</td><td><input type="password" name="userpwd" onfocus="if (this.value==‘Your password‘) this.value=‘‘;" /></td></tr> </table> <input type="submit" value="login" onClick="return validateLogin()"/> <input type="reset" value="reset"> </form> <script language="javascript"> function validateLogin(){ var sUserName = document.login.username.value ; var sPassword = document.login.password.value ; if ((sUserName =="") || (sUserName=="Your name")){ alert("user name"); return false ; } if ((sPassword =="") || (sPassword=="Your password")){ alert("password!"); return false ; } } </script> </body> </html>
- 在同樣的目錄下編輯login.php,通過php實現對數據庫的連接
在
firefox
瀏覽器中輸入127.0.0.1:5330/test2.html
,就可以訪問自己的登陸頁面啦在登錄頁面中輸入數據庫中存有的用戶名和密碼並點擊提交進行用戶認證登錄成功,輸入數據庫中沒有的就會認證失敗
登陸成功。
遇到的問題
- 在登錄跳轉過程中頁面顯示以下信息:
最後發現是php文件中的
$mysqli = new mysqli("127.0.0.1", "zy", "123456", "zy");
語句裏的值有問題。經過更改後成功登陸。第一個zy
對應的是MySQL的用戶名,123456
是用戶密碼,第二個zy
是所要使用的數據庫名。(五)SQL註入
這個漏洞是由語法造成的漏洞,接下來對剛剛自己建立的登錄網站進行註入。
構造SQL註入語句:在用戶名輸入框中輸入
‘ or 1=1#
,密碼隨便輸入,此時合成後的SQL查詢語句為select * from users where username=‘‘ or 1=1#‘ and password=m‘‘
即以下的兩句sql語句等價:select * from users where username=‘‘ or 1=1#‘ and password=‘‘
select * from users where username=‘‘ or 1=1
“#”號的作用是註釋掉後面的語句,而
1=1
作為永真式表示永遠是都是成立的,即where子句總是為真,所以能夠成功登錄。
通過SQL註入將用戶名和密碼保存在數據庫中
- 由於之前的代碼中的
if ($result = $mysqli->query($query_str))
判斷語句不允許多條sql語句執行,所以將它改成if ($result = $mysqli->multi_query($query_str))
用於執行多個sql語句。 在用戶名輸入框中輸入
‘;insert into lxmtable values(‘xx‘,‘5330‘,‘1234567890‘);#
,拆開來看就是SELECT * FROM lxmtable WHERE username=‘‘;
insert into lxmtable values(‘xx‘,‘5330‘,‘1234567890‘);
查看數據庫中的數據,發現新增了一條
xx 5330
的數據,說明插入成功使用插入的用戶名和密碼登錄。
成功。
(六)XSS攻擊
在用戶名輸入框中輸入
<img src="22.png" />
讀取/var/www/html
目錄下的圖片:
遇到的問題
一開始無法顯示圖片
- 右鍵查看未顯示的圖片出現如下圖所示警告:
在
/var/www/html
目錄下通過chmod 755 22.png
獲取圖片權限後成功。參考文章
- mysql登錄報錯“Access denied for user ‘root‘@‘localhost‘ (using password: YES”的處理方法
解決問題 “You don‘t have permission to access /index.html on this server.”
20155330 《網絡對抗》 Exp8 Web基礎