SQL注入的原理是把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。咱們訪問百度時,http://www.baidu.com/
,這個是一個正常的頁面請求語句,沒有涉及到任何動態請求數據庫的動做,因此這種狀況下不會有SQL注入。像http://www.example.com?userid=1
這個URL請求,其中包含了一個Key-Value對經過這個URL語句能夠向數據庫發送userid的數據,從而進行「增刪改查」。也就是說"?"後面的數據是和數據庫打交道的,那麼在"?"後面跟的信息就有可能會被加入惡意的SQL語句。javascript
sudo apt-get install apache2
apachectl start
查看端口占用狀況:netstat -aptn
圖1
php
瀏覽器登陸到Apache首頁驗證其可用。圖2 出現了上一次實驗的假裝網頁
html
Apache的工做目錄是/var/www/html,能夠測試apache是否可讀取工做目錄下的文件vi /var/www/html/test.txt
,而後隨意輸入一串字符,瀏覽器打開 127.0.0.1:8088/test.txt
,可看到test.txt的內容。圖3
前端
編寫一個含有表單的HTML 圖4
java
網頁效果如圖 圖5
mysql
測試php可正常工做 圖6 圖7
web
<script language="javascript"> function check(){ var Username =loginform.username.value; var pwd =loginform.password.value; if((Username == "")||(pwd == ""))//若是用戶名爲空 { alert("用戶名或密碼不能爲空"); return false; } if (pwd.length > 16 || pwd.length < 6) { alert("密碼長度應該在 6 - 16 位"); return false; } }
apt-get install mysql
service start/stop/restart mysql
mysql -u root -p
,默認密碼爲p@ssw0rd查看基本信息:show databases;
圖8
sql
修改密碼:數據庫
mysql> use mysql; mysql> select user, password, host from user; mysql>UPDATE user SET password=PASSWORD("new") WHERE user='root'; mysql>flush privileges; mysql>quit; (退出)
測試新密碼對不對apache
# mysql -u root -p Enter password:
CREATE SCHEMA
5218;
(爲何在網上查找的CREATE DATABASE 5218;這條語句不能夠)USE 5218
SHOW TABLES;
Empty set (0.00 sec)
說明沒有數據庫表。圖10
下面來建立一個數據庫表,圖11
向表中添加用戶,圖12
編寫登錄網頁login.html 圖13
編寫PHP網頁鏈接數據庫 圖14
在瀏覽器中輸入localhost:8088/login.html,訪問本身的登錄頁面 圖15
在登陸頁面中輸入以前往數據庫中添加的用戶名和密碼,點擊提交,登錄成功 圖16
轉到歡迎頁面,就是在php中加一行代碼header("Refresh:3;url=welcome.php");
,3秒鐘後跳轉
因此咱們的後臺語句:SELECT * FROM users WHERE username='' and password=('')要被變爲select * from users where username='' or 1=1#' and password=(''),在用戶名框中輸入 'or 1=1#,密碼隨便,能夠看到登錄成功 圖17
同理能夠輸入語句';insert into users(userid,username,password,enabled) values(123,'zxh',password("20145218"),"TRUE");#來將用戶名和密碼保存到數據庫中,而後再輸入用戶名zxh,密碼20145218,就能夠登錄了