2017-2018-2 20155231《網絡對抗技術》實驗八: WEB基礎實驗

2017-2018-2 20155231《網絡對抗技術》實驗八:Web基礎

實驗要求:

  1. Web前端HTML(0.5分)
    能正常安裝、啓停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。
  2. Web前端javascipt(0.5分)
    理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則。
  3. Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表(0.5分)
  4. Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證(1分)
  5. 最簡單的SQL注入,XSS攻擊測試(1分)

實驗內容:

(1)Apache啓停、編寫含有表單的HTML

  • 輸入命令systemctl start apache2打開apache2
  • 並使用netstat -aptn查看端口號,確認apache正確開啓(80端口就是Apache)
    javascript

  • 而後利用kali自帶的瀏覽器訪問(本機地址)登陸Apache首頁
    php

  • Apache的工做目錄是/var/www/html,能夠測試apache是否可讀取工做目錄下的文件vi /var/www/html/test.txt,而後隨意輸入一串字符,瀏覽器打開 ip/text.txt,可看到測試用txt的內容。
    html

  • 編寫一個HTML做爲前端的登陸頁面 (代碼)前端

<html>
<head>
    <title>login</title>
</head>
<body>
    <form name=「form」 action="20155231.php" method="post">
            Username:<input type="text" name="user"><p>
        Password:<input type="password" name="pw"><p>
        <input type="submit" value="submit">
    </form>
</body>
</html>
  • 登陸後顯示錯誤,須要php文件
<?php
$user=($_POST["user"]);

$psw=($_POST["pw"]);

echo "welcome ";
echo $user;
?>

(2) Web前端javascipt

  • JavaScript是一種普遍用於客戶端Web開發的腳本語言,經常使用來給HTML網頁添加動態功能,好比響應用戶的各類操做。
  • 文檔對象模型(Document Object Model,簡稱DOM,是W3C組織推薦的處理可擴展標誌語言的標準編程接口。
  • 編寫驗證用戶名和密碼的規則:用戶名密碼不能爲空,密碼長度在6-16之間
<html>
    <head>
        <title>login</title>
        <meta charset="utf-8"/>
        <script language="javascript">
            function check(form){
                var Username =form.user.value;
                var pwd =form.pw.value;
                if((Username == "")||(pwd == ""))//若是用戶名爲空
                {
                    alert("用戶名或密碼不能爲空");
                    return false;
                }
                if (pwd.length > 16 || pwd.length < 6)
                {
                    alert("密碼長度應該在 6 - 16 位");
                    return false;
                }
                form.submit();
            }
        </script>
    </head>
    <body>
        <form name="form" method="post" action="20155231.php">
                Username:<input type="text" name="user"><p>
            Password:<input type="password" name="pw"><p>
            <input type="button" value="submit" onclick="check(form)">
        </form>
    </body>
</html>
  • 登陸界面
    java

  • 密碼錯誤提示
    mysql

(3)Web後端、MySQL基礎

  • 安裝:apt-get install mysql
  • 啓動mysql:/etc/init.d/mysql start
  • 輸入mysql -u root -p,並根據提示輸入密碼,默認密碼爲p@ssw0rd進入MySQL
  • 建立一個數據庫TestLogin:CREATE SCHEMA TestLogin;
  • 使用建立的數據庫 USE TestLogin
  • 建立數據庫表:
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 '');
  • 輸入insert into users(userid,username,password,enabled) values( 1,'20155210',password("20155210"),"TRUE");添加信息
    web

  • 輸入select * from users進行查詢
    sql

(4)Web後端、鏈接數據庫

  • 對php進行改編,鏈接數據庫;
<?php
$user=($_POST["user"]);

$psw=($_POST["pw"]);

if($user==""||$psw=="")
{
    echo"<script>alert('Please enter your name and password!');history.go(-1);</script>"
}
else
{
    $link=mysqli_connect(「192.168.147.144」,「root」,「p@ssw0rd」,「TestLogin」);
    mysqli_select_db($link,"TestLogin");
    mysqli_query($link,'setname utf8');
    $sql="select username,password from users where username='$_POST[user]' and password=password('$psw') ";
    $result=mysqli_query($link,$sql);
    $row=mysqli_fetch_array($result);
    if($num=mysqli_num_rows($result))
    {
        echo "welcome ";
        echo $user;
    }
    else
    {
        echo"<script>alert('Wrong username or password!');history.go(-1);</script>";
    }
}
?>
  • 登陸成功

  • 若是數據庫中沒有帳戶信息

(5)最簡單的SQL注入,XSS攻擊測試

  • 簡單SQL注入
    sql查詢語句爲:select 列 from 表 where username= ' ' ,那麼當在SQL語句後加上 'or 1=1# ,則會變成 : select 列 from 表 where username=' 'or 1=1#' ,或許能成功
  • 因此咱們的後臺語句:SELECT username,password FROM users WHERE username='' and password=('')要被變爲select username,password from users where username=' 'or 1=1#' and password=(''),在用戶名框中輸入 'or 1=1#,密碼隨便,能夠看到登錄成功
    數據庫

  • 或者在用戶名框中輸入';insert into users(userid,username,password,enabled) values(2,'1552',password("1552"),"TRUE");#,就能夠直接在數據庫中添加用戶信息apache

  • xss攻擊:攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。
  • 在用戶名輸入框中輸入<img src="5231.jpg" />讀取圖片,圖片和網頁代碼在同一文件夾下

試驗後回答問題

  1. 什麼是表單
  • 表單是一個包含表單元素的區域。
  • 表單元素是容許用戶在表單中(好比:文本域、下拉列表、單選框、複選框等等)輸入信息的元素。
  • 表單使用表單標籤(
    )定義。
  1. 瀏覽器能夠解析運行什麼語言。
  • 超文本標記語言:HTML
  • 可擴展標記語言:XML
  • 腳本語言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等
  1. WebServer支持哪些動態語言
    ASP,JSP,PHP

實踐總結與體會

本次實驗中實踐了網頁編程中利用腳本登陸帳戶,要這樣作須要知道網頁編程的語言描述,而後就很容易的進入了帳戶,不論密碼的對錯。在實踐過程當中因爲kuil數據庫連不通換成了Windows作。

相關文章
相關標籤/搜索