首先用指令sudo apt-get install apache2
下載apache,因爲實驗機已經安裝好Apache,這裏就不演示了,對於Apache使用的端口咱們能夠經過sudo vi /etc/apache2/ports.conf
指令來進行修改,上次實驗中咱們就是將端口改到了80。
javascript
使用指令apachectl start
打開Apache服務,使用netstat -aptn
查看一下端口占用,因爲上次修改了端口文件,因此仍是佔用了80端口
php
cd ..
、cd var/www/html
進入到Apache的工做目錄下,輸入vi test1.html
新建一個含有表單的html,咱們經常使用的登陸頁面通常就是用表單向後臺提交數據,因此能夠編寫一個簡單的登陸頁面,代碼以下<html> <head> <meta charset="UTF-8"> <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" /></td> <td> </td> <td> </td> </tr> <tr> <td>密 碼:</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">自動登陸</td> </tr> <table> <tr> <td><input type="submit" name="login" value="登陸" /></td> <td><input type="reset" name="rs" value="重置" /></td> </tr> </table> </form> </table> </body> </html>
JavaScript是一種屬於網絡的腳本語言,已經被普遍用於Web應用開發,經常使用來爲網頁添加各式各樣的動態功能,爲用戶提供更流暢美觀的瀏覽效果,一般JavaScript腳本是經過嵌入在HTML中來實現自身的功能的。html
DOM是文檔對象模型,DOM能夠以一種獨立於平臺和語言的方式訪問和修改一個文檔的內容和結構,換句話說,這是表示和處理一個HTML或XML文檔的經常使用方法。舉個例子,要改變頁面的某個東西,JavaScript就須要得到對HTML文檔中全部元素進行訪問的入口。這個入口,連同對HTML元素進行添加、移動、改變或移除的方法和屬性,都是經過DOM來得到的。前端
login_test.html
,代碼以下所示<html> <head> <meta charset="UTF-8"> <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>
先輸入/etc/init.d/mysql start
指令開啓mysql服務,輸入mysql -u root -p
,並根據提示輸入密碼,默認密碼爲password
,進入MySQL,注意:在MySQL中輸入命令後面都要帶一個分號做爲命令結束符
java
咱們能夠對密碼進行修改:輸入use mysql;
,選擇mysql數據庫;輸入update user set password=PASSWORD("新密碼") where user='root';
,修改密碼;輸入flush privileges;
,更新權限
mysql
接着輸入quit
退出MySQL,從新進入,使用新密碼登陸成功,說明修改爲功web
這個部分跟着學長的博客作完後本身在嘗試的時候有發現這個密碼隨意輸入什麼都能進入mysql,在百度以後瞭解,mysql內默認有一個權限,就是若是從本地登錄Mysql的root用戶就不會進行密碼認證,因此在本地不管輸入什麼密碼都能登入mysql。
sql
咱們先使用create database 庫名;
創建一個數據庫;使用show databases;
查看存在的數據庫;使用use 庫名;
使用咱們建立的數據庫數據庫
在這裏庫名不能是純數字!
apache
接着使用create table 表名 (字段設定列表);
創建數據表,數據表是數據庫中一個很是重要的對象,一個數據庫中可能包含若干個數據表;使用show tables
查看存在的數據表
使用insert into 表名 values('值1','值2','值3'...);
插入數據;使用select * from 表名
查詢表中的數據
使用grant select,insert,update,delete on 數據庫.* to 用戶名@登陸主機 identified by "密碼";
指令建立用戶,如圖所示,增長新用戶以後,退出,從新使用新用戶名和密碼進行登陸,登陸成功說明增長新用戶成功
能夠看見把登錄用戶名從本地的root換爲新建的用戶以後,隨意輸入的密碼不能登入。
vi login.php
,代碼以下<?php $uname=$_POST["username"]; $pwd=$_POST["password"]; echo $uname; $query_str="SELECT * FROM zrq20155230 where username='$uname' and password='$pwd';"; $mysqli = new mysqli("127.0.0.1", "root", "20155230", "zrq20155230"); /* 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(); ?>
圖中紅框內分別是mysql用戶名、密碼、數據庫名,圖中第五行的zrq20155230
是數據庫內調用的表名。
先將以前編的登陸網頁的login_test.html
代碼中form
的action
屬性由#
改爲login.php
,即登陸後跳轉到login.php
,再在瀏覽器中輸入localhost:80/login_test.html
訪問本身的登陸頁面
在用戶名輸入框中輸入' or 1=1#
,密碼隨便輸入,這時候的合成後的SQL查詢語句爲select * from zrq20155230 where username='' or 1=1#' and password=''
,#
至關於註釋符,會把後面的內容都註釋掉,而1=1是永真式,因此這個條件確定恆成立,因此可以成功登錄
咱們還能夠經過SQL注入將用戶名和密碼保存在數據庫中,可是得修改一下以前的代碼,由於咱們以前編的代碼將登錄用戶名的長度鎖死在了20而且if ($result = $mysqli->query($query_str))
這條判斷語句不容許多條sql語句執行,因此將它們分別在login_test.html
和login.php
中改爲maxlength=20000
、if ($result = $mysqli->multi_query($query_str))
便能實現執行多個sql語句,接着在用戶名輸入框中輸入';insert into zrq20155230 values('zn','5230');#
,拆開來看就是
SELECT * FROM zrq20155230 WHERE username=''; insert into zrq20155230 values('zn','5230');
,接着登陸,出現以下所示頁面,可是!添加用戶成功!
接着使用新插入的用戶名和密碼進行登陸,登陸失敗!
懷疑是由於剛纔對login.php
進行改動的緣由,再次改回去以後能登錄成功!爲何會出現這種狀況暫時沒時間去解決了!咱們往後再研究吧!
將一張圖片存入/var/www/html
目錄
在用戶名輸入框中輸入<img src="psb.jpeg" />20155230</a>
讀取/var/www/html
目錄下的圖片