返回目錄javascript
經過本次實驗,我較爲快速、系統地學到了Web的前端和後端,上學期有接觸過網頁編程,但只懂得一些表單的使用,就是一些簡單的HTML語言,如今意識到了腳本語言在網頁編程的重要做用。此次實驗和咱們的互聯網活動息息相關,天天咱們訪問的每個網頁都是代碼,針對代碼的漏洞進行攻擊,理解代碼的含義,我以爲是很是有意義的。php
返回目錄html
service apache2 start
命令打開Apache服務,而後在瀏覽器輸入127.0.0.1
,若是能夠打開Apache的默認網頁,則驗證開啓服務成功:cd /var/www/html
進入到Apache的工做目錄下,vi test1.html
新建一個含有表單的html文件(咱們經常使用的登陸頁面通常就是用表單向後臺提交數據,因此能夠編寫一個簡單的登陸頁面):<html> <head> <title>test</title> </head> <body> <table> <form method ="POST" action="#" name="frmLogin" > <tr> <td>username: </td> <td><input type="text" name="username" value="Your name" size="20" maxlength="20" /></td> <td> </td> <td> </td> </tr> <tr> <td>password:</td> <td><input type="password" name="password" value="Your password" size="20" maxlength="20" /></td> <td> </td> <td> </td> </tr> <tr> <td><input type="checkbox" name="zlogin" value="1">auto-Login</td> </tr> <table> <tr> <td><input type="submit" name="login" value="Login" /></td> <td><input type="reset" name="rs" value="Reset" /></td> </tr> </table> </form> </table> </body> </html>
/var/www/html/test1.html
打開網頁:<html> <head> <title>test</title> </head> <body> <table> <form method ="POST" action="login.php" name="frmLogin" > <tr> <td>user</td> <td><input type="text" name="username" value="Your name" size="20" onfocus="if (this.value=='Your name') this.value='';" /></td> <td> </td> <td> </td> </tr> <tr> <td>password</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">auto login</td> </tr> <table> <tr> <td><input type="submit" name="login" value="login" onClick="return validateLogin()"/></td> <td><input type="reset" name="rs" value="reset" /></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("user name"); return false ; } if ((sPassword =="") || (sPassword=="Your password")){ alert("password!"); return false ; } } </script> </body> </html>
/etc/init.d/mysql start
mysql -u root -p
使用root權限進入,默認密碼爲password
。show databases;
use mysql;
,選擇mysql數據庫;輸入update user set password=PASSWORD("新密碼") where user='root';
,修改密碼;輸入flush privileges;
,更新權限quit
退出數據庫,用新密碼從新登陸,先使用create database 庫名;
創建一個數據庫;使用show databases;
查看存在的數據庫;使用use 庫名;
使用咱們建立的數據庫:
前端
create table 表名 (字段設定列表);
創建數據表,數據表是數據庫中一個很是重要的對象,一個數據庫中可能包含若干個數據表;使用show tables;
查看存在的數據表:insert into 表名 values('值1','值2','值3'...);
插入數據;使用select * from 表名;
查詢表中的數據:grant select,insert,update,delete on 數據庫.* to 用戶名@登陸主機(能夠是localhost,也能夠是遠程登陸方式的IP) identified by "密碼";
指令,這句話的意思是將對某數據庫的全部表的select,insert,update,delete權限授予某IP登陸的某用戶:增長新用戶後,使用新的用戶名和密碼進行登陸:mysql -u wsj -p
,登陸成功,即說明增長新用戶成功:
java
PHP是一種通用開源腳本語言,語法吸取了C語言、Java和Perl的特色,主要適用於Web開發領域。它能夠比CGI或者Perl更快速地執行動態網頁。用PHP作出的動態頁面與其餘的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比徹底生成HTML標記的CGI要高許多;PHP還能夠執行編譯後代碼,編譯能夠達到加密和優化代碼運行,使代碼運行更快。mysql
/var/www/html
目錄下新建一個PHP測試文件phptest.php
<?php echo ($_GET["a"]); include($_GET["a"]); echo "This is my php test page!<br>"; ?>
localhost:80/phptest.php?a=/etc/passwd
,可看到/etc/passwd
文件的內容login.php
,代碼以下:<?php $uname=$_POST["username"]; $pwd=$_POST["password"]; echo $uname; $query_str="SELECT * FROM wsjtable where username='$uname' and password='$pwd';"; $mysqli = new mysqli("127.0.0.1", "wsj", "111111", "wsj"); /* 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> {$uname}:Welcome login!! <br> "; } else { echo "<br> login failed!!!! <br> " ; } /* free result set */ $result->close(); } $mysqli->close(); ?>
SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來講,它是利用現有應用程序,將(惡意的)SQL命令注入到後臺數據庫引擎執行的能力,它能夠經過在Web表單中輸入(惡意)SQL語句獲得一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。web
' or 1=1#
,密碼任意輸入,可登陸成功:這是由於咱們輸入的用戶名和代碼中的select語句組合起來變成了select * from users where username='' or 1=1#' and password=''
,#
至關於註釋符,把後面的內容都註釋掉;而1=1
是永真式,即這個條件永遠成立,因此無論密碼是否輸入正確,都可以成功登陸。sql
XSS攻擊:跨站腳本攻擊(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆。故將跨站腳本攻擊縮寫爲XSS。XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。好比這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞因爲被駭客用來編寫危害性更大的phishing攻擊而變得廣爲人知。對於跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的「緩衝區溢出攻擊」,而JavaScript是新型的「ShellCode」。數據庫
/var/www/html
目錄在用戶名框中輸入<img src="1.jpg" />
,密碼隨意輸入,就能夠讀取到/var/www/html
目錄下的圖片:
apache