1.什麼是表單javascript
來自百度百科的官方定義:表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分:php
表單標籤:這裏麪包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。html
表單域:包含了文本框、密碼框、隱藏域、多行文本框、複選框、單選框、下拉選擇框和文件上傳框等。前端
表單按鈕:包括提交按鈕、復位按鈕和java
通常按鈕;用於將數據傳送到服務器上的CGI腳本或者取消輸入,還能夠用表單按鈕來控制其餘定義了處理腳本的處理工做。mysql
2.瀏覽器能夠解析運行什麼語言web
超文本標記語言:HTMLsql
可擴展標記語言:XML數據庫
腳本語言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等apache
3.WebServer支持哪些動態語言
ASP語言,PHP語言和JSP語言
1、Web前端HTML
1.輸入sudo vi /etc/apache2/ports.conf查看apache端口狀況,將80改爲本身想用的數字,我用的是8080
2.經過apachectl start開啓Apache,使用netstat -aptn查看端口占用:在這裏apach2確實佔用了端口8080,能夠進行下一步了
3.瀏覽器中輸入localhost:8080,測試apache是否正常工做,由於上次實驗我假冒的網站是baidu,因此如今彈出來的是baidu
4.編寫一個含有表單的html,新建在Apache工做目錄/var/www/html下。我用了上學期劉念老師網絡安全編程基礎做業的表單代碼試驗了一下,除了編碼方式不一樣的問題有亂碼,功能沒有問題。
代碼以下:
<html> <head> <title>test</title> </head> <body> <table> <form method ="POST" action="#" name="frmLogin" > <tr> <td>用戶名:</td> <td><input type="text" name="username" value="Your name" size="20" maxlength="20" onfocus="if (this.value=='Your name') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td>密 碼:</td> <td><input type="password" name="password" value="Your password" size="20" maxlength="20" onfocus="if (this.value=='Your password') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td><input type="checkbox" name="zlogin" value="1">自動登陸</td> </tr> <table> <tr> <td><input type="submit" name="login" value="登陸" onClick="return validateLogin()"/></td> <td><input type="reset" name="rs" value="重置" /></td> </tr> </table> </form> </table> <script language="javascript"> function validateLogin(){ var sUserName = document.frmLogin.username.value ; var sPassword = document.frmLogin.password.value ; if ((sUserName =="") || (sUserName=="Your name")){ alert("請輸入用戶名!"); return false ; } if ((sPassword =="") || (sPassword=="Your password")){ alert("請輸入密碼!"); return false ; } } </script> </body> </html>
此代碼能夠在win10下運行出來以下界面,可是在kali裏,不能支持中文,故進行了一些修改。
本身增長了一些色彩。。可是有亂碼,由於不支持中文,改成英文就行了。
當不輸入用戶名時出現以下提示:
6.由於沒有編寫相應action的php,因此submit以後指向404:not found
2、Web前端javascipt
2.DOM概念:在網頁上,組織頁面(或文檔)的對象被組織在一個樹形結構中,用來表示文檔中對象的標準模型就稱爲DOM。
3.編寫驗證用戶名和密碼的規則:(用戶名和密碼不爲空)
4.實現一個javascript(表單驗證)
若是沒有填寫學號,將會出現以下:
3、Web後端:MySQL基礎:正常安裝、啓動MySQL,建庫、建立用戶、修改密碼、建表
1.先輸入/etc/init.d/mysql start指令開啓mysql服務,輸入mysql -u root -p,並根據提示輸入密碼,默認密碼爲p@ssw0rd,進入MySQL,注意:在MySQL中輸入命令後面都要帶一個分號做爲命令結束符,不然不執行:
2.咱們能夠對密碼進行修改:輸入use mysql;,選擇mysql數據庫;輸入update user set password=PASSWORD("新密碼") where user='root';,修改密碼;輸入flush privileges;,更新權限;
3.接着輸入quit退出MySQL,從新進入,使用新密碼登陸成功,說明修改爲功
4.咱們先使用create database 庫名;創建一個數據庫;使用show databases;查看存在的數據庫;使用use 庫名;使用咱們建立的數據庫:
5.接着使用create table 表名 (字段設定列表);創建數據表,數據表是數據庫中一個很是重要的對象,一個數據庫中可能包含若干個數據表;使用show tables查看存在的數據表:
6.使用insert into 表名 values('值1','值2','值3'...);插入數據;使用select * from 表名查詢表中的數據:
Web後端:PHP基礎
1.咱們能夠在/var/www/html目錄下新建一個PHP測試文件,簡單瞭解一下它的一些語法:
<?php echo ($_GET["a"]); include($_GET["a"]); echo "This is lxm php test page!<br>"; ?>
2.瀏覽器打開localhost:80/lxm_test.php?a=/etc/passwd可看到/etc/passwd文件的內容,注意PHP變量大小寫敏感:
簡單測試完成後,咱們能夠利用PHP和MySQL結合以前編的登陸網頁進行簡單的用戶身份認證,這裏能夠參考老師給的代碼編寫fyz_test.php,代碼以下所示:
<?php $uname=($_POST["username"]); $pwd=($_POST["password"]); echo $uname; $query_str="SELECT * FROM fyztable where username='{$uname}' and password='{$pwd}';"; $str="SELECT * FROM users where username='{$uname}' and password='password{$pwd}';"; $mysqli = new mysqli('127.0.0.1', 'root', 'p@ssw0rd', 'fyz_test'); /* 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 "<br> Welcome login Mr/Mrs:{$uname} <br> "; } else { echo "<br> login failed!!!! <br> " ; } /* free result set */ $result->close(); } $mysqli->close(); ?>
3.這裏作幾點說明,如圖所示圈出的部分,第一個password那個地方老師給的代碼是調用了password函數對密碼進行了加密,可是若是數據庫裏密碼沒有加密的話,最後輸入的值比對確定不會相等,登錄不成功,因此要把password那個函數去掉,第二個127.0.0.1是本機地址,root是MySQL的用戶名p@ssw0rd以前的登陸密碼,fyz_test是數據庫的庫名。
可是無論輸入對的仍是錯誤的用戶名密碼,顯示的都是下圖,登陸失敗。
這時進入/etc/mysql目錄下,執行sudo vi debian.cnf或者sudo
vimdebian.cnf查看裏面的用戶名和密碼,
而後使用這個文件中的用戶名和密碼進入mysql但仍是被拒絕了。
以後我還下載了自帶的phpmyadmian數據庫。覺得會有幫助。
但仍是不行,我才意識到確定是代碼有問題,因而我仔細看看別的同窗的代碼。發現!本身就是個傻子
改成post就行了。。。。
SQL注入
select * from lxmtable where username='' or 1=1#' and password=''
if ($result = $mysqli->query($query_str))
這條判斷語句不容許多條sql語句執行,因此將它改爲
if ($result = $mysqli->multi_query($query_str))
便能實現執行多個sql語句,接着在用戶名輸入框中輸入
';insert into zxtable values('cjd','5219');#
拆開來看就是
SELECT * FROM zxtable WHERE username='';、insert into zxtable values('cjd','5219',);
,接着登陸,再去查數據庫:發現真的多了一行數據。
有這行數據當作用戶名密碼登陸試試看,果真能夠登上了。
XSS攻擊
XSS攻擊:跨站腳本攻擊(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆。故將跨站腳本攻擊縮寫爲XSS。XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。好比這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞因爲被駭客用來編寫危害性更大的phishing攻擊而變得廣爲人知。對於跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的「緩衝區溢出攻擊「,而JavaScript是新型的「ShellCode」。
咱們能夠進行一個簡單的測試,在用戶名輸入框中輸入讀取/var/www/html目錄下的圖片:
此次實驗雖有上學期劉念老師《網絡安全編程基礎》的知識基礎,但新知識量仍是比較大,理應耗時較長,幸在天晨同窗博客寫的很是好,搬用她的代碼作實驗沒有用太長時間。但我知道這是遠遠不夠的,由於不少理論知識的理解還有欠缺,代碼也理解的不夠充分,應該繼續努力。並且,我耗時不少天完成的實驗,中間遇到不少問題,一一解決了,但有的沒有記錄,總之仍是完成了,以爲本身挺牛逼的。