20169207 2016-2017-2 《網絡攻防實踐》 第十一週做業

實驗介紹

SQL注入技術是利用web應用程序和數據庫服務器之間的接口來篡改網站內容的攻擊技術。經過把SQL命令插入到Web表單提交框、輸入域名框或頁面請求框中,最終欺騙服務器執行惡意的SQL命令。
在這個實驗中,咱們使用的web應用程序稱爲Collabtive。咱們禁用Collabtive的若干防禦措施,這樣咱們就建立了一個容易受到SQL注入攻擊的Collabtive版本。通過咱們的人工修改,咱們就能夠經過實驗分析許多web開發人員的常見錯誤與疏忽。在本實驗中學生的目標是找到方法來利用SQL注入漏洞實施攻擊,並經過掌握的技術來阻止此類攻擊的發生。php

SQL Injection:

就是經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
具體來講,它是利用現有應用程序,將(惡意)的SQL命令注入到後臺數據庫引擎執行的能力,它能夠經過在Web表單中輸入(惡意)SQL語句獲得一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。mysql

SQL注入危害

非法讀取、篡改、添加、刪除數據庫中的數據。
盜取用戶的各種敏感信息,獲取利益。web

經過修改數據庫來修改網頁上的內容。
私自添加或刪除帳號。
注入木馬等等。sql

實驗過程

啓動mysql:sudo mysqld_safe
啓動apache:sudo service apache2 start 密碼:dees
數據庫

這裏須要退出的時候提示e45 readonly option is set (add!to override),解決辦法:使用wq!強制退出apache

sudo vim /etc/hosts
vim

sudo vim /etc/apache2/conf.d/lab.conf瀏覽器

sudo service apache2 restart 重啓服務

打開瀏覽器:
安全

關閉php配置策略:
sudo vim /etc/php5/apache2/php.ini 把magic_quotes_gpc=On 改成 magic_quotes_gpc = Off
關於magic_quotes_off函數:
對於magic_quotes_gpc=on的狀況, 咱們能夠不對輸入和輸出數據庫的字符串數據做addslashes()和stripslashes()的操做,數據也會正常顯示;
若是此時你對輸入的數據做了addslashes()處理,那麼在輸出的時候就必須使用stripslashes()去掉多餘的反斜槓。
對於PHP magic_quotes_gpc=off 的狀況
必須使用addslashes()對輸入數據進行處理,但並不須要使用stripslashes()格式化輸出,由於addslashes()並未將反斜槓一塊兒寫入數據庫,只是幫助mysql完成了sql語句的執行。服務器

查看登錄驗證文件:sudo vim /var/www/SQL/Collabtive/include/class.user.php 設置行號 :set number 查找 :/keyword
修改375行爲$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender, FROM user WHERE (name = '$user' OR email = '$user') AND pass = '$pass'");
重啓服務器:



思考,爲何只知道用戶名就能夠登陸?咱們在$user後面加上) # 這樣就會只驗證用戶名,後面的會被#註釋,所以咱們就能夠繞過密碼直接登陸。

登陸用戶名:admin') union update user set name='test' #登陸失敗。
緣由解釋MySQL機制:update不支持union語法。

update語句的sql注入

Collabtive平臺中能夠更新用戶信息,咱們要實現經過本身的用戶去修改別人的用戶信息;有一個在這個SQL語句中的SQL注入漏洞;sudo vim /var/www/SQL/Collabtive/include/class.user.php
咱們能夠找到以下的代碼

相關文章
相關標籤/搜索