20145202馬超《網絡對抗》Exp8 Web基礎

1.本實踐的具體要求有:javascript

(1).Web前端HTML(1分)php

能正常安裝、啓停Apache。理解HTML,理解表單,理解GET與POST方法,編寫一個含有表單的HTML。html

(2).Web前端javascipt(1分)前端

理解JavaScript的基本功能,理解DOM。編寫JavaScript驗證用戶名、密碼的規則。java

(3).Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表(1分)mysql

(4).Web後端:編寫PHP網頁,鏈接數據庫,進行用戶認證(1分)git

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

功能描述:用戶能登錄,登錄用戶名密碼保存在數據庫中,登錄成功顯示歡迎頁面。數據庫

課題負責人須要完成:登錄後能夠發貼;會話管理。apache

1.實驗後回答問題

(1)什麼是表單
就是個表,與後臺數據庫相連

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

(3)WebServer支持哪些動態語言
js算不算動態語言?若是算那就是

2.實驗總結與體會

感受跟上學期劉念老師教的那些差很少,多了個php文件,以及一些攻擊方法,不過應對這些攻擊方法,我感受限制一下最大的輸入字符數就能夠解決吧?

3.實踐過程記錄

Apache

  • 先經過apachectl start命令開啓Apach,使用netstat -aptn命令查看端口占用:

  • 由於端口號80已經被佔用(上次實驗設置的),因此改/etc/apache2/ports.conf裏的端口爲5202後從新開啓阿帕奇,再次查看端口:

  • 能夠在瀏覽器中輸入localhost:5208來檢查是否正常開啓,這裏能夠看到打開了上次實驗的網頁,開啓正常:

簡單的表單網頁

  • 能夠對以前的index.html進行修改,改爲一個有表單功能的網頁
    到這裏我忽然有點後悔用steam官網的網頁,裏面的東西太多了,能夠看到前20行基本上都是超連接。
  • 上圖爲改以前,下圖爲改以後
  • 打開網頁的效果,在瀏覽器裏面輸入127.0.0.1:5202就能夠打開它

  • 提交以後是404,由於沒有php文件

javascript

  • 我感受js其實就是用java語言寫網頁,java提供的接口在咱們寫網頁時會很方便,其餘做感受用都是編出來的。
  • js驗證用戶名和密碼的規則

    PHP測試

  • 一個簡單的php測試代碼
    <?php
    echo ($_GET["A"]);
    include($_GET["A"]);
    echo "this is my first php page!
    ";
    ?>
    20145202
  • 打開localhost:5202/mc.php

MySQL

  • 使用命令/etc/init.d/mysql start打開mysql服務
  • 輸入mysql -u root -p,並根據提示輸入密碼,默認密碼爲p@ssw0rd,進入MySQL

  • 可使用命令show databases;查看信息(分號不能夠漏掉,分號表明命令的結束):

  • 修改密碼:
    輸入use mysql;,選擇mysql數據庫
    輸入select user, password, host from user;,mysql庫中的user表中存儲着用戶名、密碼與權限
    輸入UPDATE user SET password=PASSWORD("新密碼") WHERE user='root';
    輸入flush privileges;,更新權限
    輸入quit退出

  • 從新登陸就能夠發現密碼修改爲功

    建立新表

  • 使用以下兩條命令能夠創建新表:
    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(1,'用戶id',password("用戶密碼"),"TRUE");

  • 如今再查看信息就能夠看到新建表:

php+mysql編寫網頁

  • 網頁的登陸頁面:



    login





    Welcome











  • 可是我不會往kali裏面複製粘貼,偶然發現文件夾裏面有個寫好的login1.html,我就改了一下本身用了,它對應的是login.php
  • 這裏有個問題就是提交不上去,無奈我把正確的代碼一個一個字母敲了上去,同時我也發現kali裏面自帶的那個login.html裏面是有提醒的:」do not click me!「

  • 實現與數據庫連接的php頁面:
    <?php
    $uname=($_GET["username"]);
    $pwd=($_GET["password"]);
    echo $uname;
    $query_str="SELECT * FROM users where username='{$uname}' and password=password('{$pwd}');";
    echo "
    {$query_str}
    ";
    $mysqli = new mysqli("127.0.0.1", "root", "5202", "haha");
    /* check connection */
    if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    }
    else echo "lalalademaxiya.
    ";

if ($result1= $mysqli->multi_query($query_str))
echo "lalalajiecaobujianle
";
$mysqli->close();
$mysqli = new mysqli("127.0.0.1", "root", "5202", "haha");
/* check connection /
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
echo "connection ok!";
/
Select queries return a resultset /
if ($result = $mysqli->query($query_str)) {
if ($result->num_rows > 0 ){
echo "
Wellcome login Mr/Mrs:{$uname}
";
} else {
echo "
login failed!!!!
" ;
}
/
free result set */
$result->close();
}
$mysqli->close();
?>

  • 一樣,我文件夾裏有個login.php,我就改了一下直接用了
  • 效果:

SQL注入

  • 在網頁登陸的用戶名中填寫' or 1=1#,成功登陸:

  • 或者在用戶名框中輸入';insert into users(userid,username,password,enabled) values(888,'mc',password("20145202"),"TRUE");#,在數據庫中能夠直接插入一個僞造的用戶名,密碼,下次就能夠用僞造的用戶名密碼登陸網站了
  • 這個沒有作嘗試,當時電腦快沒電了,可是原理是懂的。

XSS攻擊

  • 跨站腳本攻擊(Cross Site Scripting),惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。
  • 在登陸的用戶名中輸入:20145202,就能夠訪問目錄下的圖片
  • 最後向婁老師致敬,來張git的圖
相關文章
相關標籤/搜索