20145120黃玄曦《網絡對抗》Web基礎

20145120黃玄曦《網絡對抗》Web基礎

回答問題

(1)什麼是表單javascript

表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分: 表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。 表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等。 表單按鈕:包括提交按鈕、復位按鈕和通常按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。php

(2)瀏覽器能夠解析運行什麼語言html

HTML、XML等標記語言,還有Javascript、PHP等腳本語言等等前端

(3)WebServer支持哪些動態語言java

Javascript、PHP、servlet、ASP等等mysql

實驗總結與體會

之前SQL注入以及XSS都據說過不少次了,此次實驗總算切實地體驗了一次什麼是SQL注入,以及XSS。讓咱們知道了防範SQL注入和XSS的重要性,我瞭解到如何防範SQL注入和XSS。對SQL注入,用戶輸入的數據必定要通過處理再執行數據庫的相關操做,這須要不少經驗。對XSS,一樣要處理用戶輸入的數據,在PHP中,POST方式傳來的數據須要用trim();stripslashes();htmlspecialchars();處理之類的。
雖然實驗期間趕上了不少麻煩,比以前的實驗花了更多時間,可是感受比想象中稍微容易一點,多是由於以前選修過《數據庫原理與安全》和《網絡安全編程基礎》吧,並且課題負責人的博客也是巨大的助力。
應爲以前學過《數據庫原理與安全》和《網絡安全編程基礎》,HTML和MySQL我都有點基礎感受作起來不難。PHP之前徹底沒接觸過,犯了不少很基礎的錯誤,就是在這裏花了不少時間學語法。web

實驗內容

Web前端HTML表單

先啓動apache服務(一開始忘了改hostname)
sql

發現80端口已經被佔用,那就修改配置文件,改爲5120端口好了,再次啓動apache,用瀏覽器打開127.0.0.1:5120能夠看到上次實踐寫的頁面,說明apache正常工做中
數據庫

/var/www/html/目錄下新建文件5120.html,用vim編寫一個簡單的帶表單頁面,以後能夠用瀏覽器訪問127.0.0.1(或localhost):5120/文件名訪問該文件,期間我發現用vim寫這個真是不順手,修改起來很麻煩,我應該先在eclipse寫好粘過去
apache

Web前端Javascript

用Javascript寫一個檢查用戶名是否爲空的函數,點擊提交按鈕時執行,此次我機智地先用eclipse寫好測試無誤後粘貼到虛擬機

惋惜粘完發現中文亂碼了

改一下,加上一句用utf-8編碼

測試成功

如下最終版5120.html:

<html>
<head>
<meta charset="utf-8">

<title>5120_Login</title>

<script type="text/javascript">
function checkUname(){
    var uname=document.getElementById("uname");
    if(uname.value==""){
        alert("用戶名不能爲空!");
    }
}
</script>

</head>

<body>
<h1>輸用戶名密碼:</h1>

<form name="myform" action="5120.php" method="post">

<table>
    <tr>
    <td align="right">用戶名:</td>
    <td><input type="text" name="uname" id="uname"/></td>
    </tr>

    <tr>
    <td align="right">密碼:</td>
    <td><input type="password" name="pw" id="pw"/></td>
    </tr>
</table>

<input type="submit" value="登陸" onclick="checkUname()"/>

</form>
</body>
</html>

Web後端MySql

/etc/init.d/mysql start啓動Mysql服務

mysql -u root -p登陸,默認密碼p@ssw0rd

太複雜了,固然是選擇update它

use mysql;
UPDATE user SET password=PASSWORD("123456(新密碼)") WHERE user='root';
flush privileges;

退出重進,密碼已改

而後,新建數據庫,新建數據表,插入數據,最後查詢一下試試

create schema `hxx5120`; #新建數據庫

create table `hxx5120`.`users` ( #新建數據表
`uid` int not null comment '',
`uname` varchar(20) comment '',
`pw` varchar(256) comment '', #開始的時候把長度設過小告終果後面用條件查詢where pw=***出問題,查不出來
primary key (`uid`) comment '');

insert into users values(1,'aaa',password("5120")); #插入數據

select * from users; #查詢
select * from users where uname='aaa' and pw=password('5120');

Web後端PHP

新知識,老套路,先寫個helloworld試試,簡單

再試試獲得表單傳過來的元素,Pass

Web基礎綜合運用

PHP鏈接數據庫,沒什麼問題,而後數據查詢,我頗有自知之明的選擇先輸出要執行的sql語句,一嘗試果真就有失了智似得錯,默默地把格式改回'{$***}'

而後又發現下面調用用戶名的時候打錯成了uanme,最後成功

如下最終版5120.php:

<html>

<head>
<title>5120_php</title>
</head>

<body>

<?php 
$uname = $_POST["uname"];
$pw = $_POST["pw"];

$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "hxx5120";
 

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("鏈接失敗: " . $conn->connect_error);
} 

$sql = "SELECT * FROM users WHERE uname='{$uname}' AND pw=PASSWORD('{$pw}');";
//echo $sql;

$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    echo "登陸成功\n歡迎你 $uname!";
} else {
    echo "用戶名或密碼錯誤";
}

$conn->close();
?>

</body>

</html>

sql注入

嘗試了永真式注入,在用戶名處輸入' or 1=1#,sql語句就變成了SELECT * FROM users WHERE uname='' or 1=1# AND pw=PASSWORD('{$pw}');

密碼隨便輸,由於後面都被註釋掉了,而1=1是永遠成立的,老是能登陸上去。

XSS

遺憾,早知道前面就不用POST方法了,由於POST方法不經過url傳表單數據,能力有限,沒辦法只能從新作頁面,分別copy一下5120.html,5120.php爲x5120.html,x5120.php

不上代碼了,和以前基本同樣就是改爲GET方法,方便我進行XSS攻擊,

找了張圖片power.jpg放到/var/www/html/目錄下

以後在x5120.html輸入用戶名處輸入<img src="power.jpg" />大家對力量一無所知</a>,結果以下

相關文章
相關標籤/搜索