本節學習的目標是針對seed環境下的網站進行sql注入攻擊php
在本次實驗過程當中,咱們須要三樣東西:Firefox瀏覽器、Apache、phpbb網站。mysql
1.運行Apache。在命令行下輸入 sudo service apache2 start .以下圖:web
2.測試網站運行環境,因爲在seed環境下已經提早安裝好了Apache+mysql+php的環境。所以只須要打開網站地址便可測試網站的運行情況。在地址欄輸入http://www.sqllabmysqlphpbb.com,即可以正常訪問此網站。如圖:sql
測試可知,該網站可以正常的訪問。數據庫
3.本網站默認的DNS解析式解析到本機的,爲了便於其餘機器可以訪問該網站,須要修改配置文件,文件路徑/etc/hosts.將原來的映射到127.0.0.1的地址改成本機的ip地址。apache
其中ip地址使用ifconfig命令能夠查詢到。代換結果以下所示:瀏覽器
在此過程當中,遇到的問題是hosts文件因爲權限問題不能正常的保存,所以須要使用更改文件權限的命令去設置hosts文件權限。在此我使用的是:sudo chmod 777 /etc/hosts。在更改文件權限以後,才能正常的保存文件。函數
4.php配置文件中默認是自動開啓對抗sql注入機制的,所以須要將magic_quotes_gpc = On字段改成off。這樣纔可以正常的使用sql注入方法。這個目錄下的文件一樣也存在權限問題,也須要使用該更目錄權限名利。在此默認的我都是使用chmod77 拿到全部的權限的。學習
5.重啓Apache,命令爲 sudo service apache2 restart。測試
6.針對select語句進行攻擊。
在登陸界面,因爲sql語句存在不完整性驗證。用戶鍵入用戶名和密碼以後,login.php會將傳送過來的數據與mysql數據庫中的username和user_password字段相比較,若是匹配成功則成功登陸。與其餘的web應用程序同樣,php程序使用sql語言與背後的數據庫交互。
具體的操做步驟是在輸入用戶名的登陸框內輸入:ted'OR'1'='1'。
一樣的,在update語句中也是存在相應的漏洞。
不過在理論上,這個語句是成立的,可是在具體的實施過程當中遇到了問題。在輸入相應的sql注入語句後,並不能成功的進行注入測試。
在本節的學習中,關於sql注入的理論性知識都能理解並掌握,可是存在最大的問題就是在實際的操做過程當中,不能正確的實施攻擊。在輸入注入語句以後,頁面返回輸入用戶名不正確的提示,須要從新輸入等信息。
方法一:針對sql注入的狀況能夠將magic_quotes_gpc改成on設置,從而可以正常避免非法輸入。
方法二:能夠使用php自帶的函數addslashes()來避免特殊字符。
方法三:使用 mysql_real_escape_string 避開特殊字符。