Collabtive 系統 SQL 注入實驗 php
實驗介紹mysql
SQL注入技術是利用web應用程序和數據庫服務器之間的接口來篡改網站內容的攻擊技術。經過把SQL命令插入到Web表單提交框、輸入域名框或頁面請求框中,最終欺騙服務器執行惡意的SQL命令。web
在這個實驗中,咱們使用的web應用程序稱爲Collabtive。咱們禁用Collabtive的若干防禦措施,這樣咱們就建立了一個容易受到SQL注入攻擊的Collabtive版本。通過咱們的人工修改,咱們就能夠經過實驗分析許多web開發人員的常見錯誤與疏忽。在本實驗中學生的目標是找到方法來利用SQL注入漏洞實施攻擊,並經過掌握的技術來阻止此類攻擊的發生。 預備知識sql
一、 SQL語言數據庫
結構化查詢語言(Structured Query Language)簡稱SQL:是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統;同時也是數據庫腳本文件的擴展名。apache
二、SQL注入編程
SQL注入:SQL注入能使攻擊者繞過認證機制,徹底控制遠程服務器上的數據庫。SQL是結構化查詢語言的簡稱,它是訪問數據庫的事實標準。目前,大多數Web應用都使用SQL數據庫來存放應用程序的數據。幾乎全部的Web應用在後臺都使用某種SQL數據庫。跟大多數語言同樣,SQL語法容許數據庫命令和用戶數據混雜在一塊兒的。若是開發人員不細心的話,用戶數據就有可能被解釋成命令,這樣的話,遠程用戶就不只能向Web應用輸入數據,並且還能夠在數據庫上執行任意命令了。ubuntu
sql注入原理講解vim
三、SQL注入危害服務器
非法讀取、篡改、添加、刪除數據庫中的數據。
盜取用戶的各種敏感信息,獲取利益。
經過修改數據庫來修改網頁上的內容。
私自添加或刪除帳號。
注入木馬等等。
四、環境搭建
啓動mysql:
sudo mysqld_safe
注意啓動後程序不會退出,能夠打開新的終端執行後續命令。
啓動Apache:
sudo service apache2 start
密碼:dees
配置DNS:
sudo vim /etc/hosts
按i進入編輯模式,編輯文件
編輯完成後按Esc退出編輯
完成後使用 :wq 保存並退出
配置網站文件:
sudo vim /etc/apache2/conf.d/lab.conf
sudo service apache2 restart 重啓服務
用戶名:admin;密碼:admin
關閉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語句的執行。
實驗內容 lab1 select語句的sql注入
訪問:www.sqllabcollabtive.com;當咱們知道用戶而不知道到密碼的時候,咱們能夠怎麼登錄?
查看登錄驗證文件:
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'");
這一句就是咱們登陸時,後臺的sql語句;咱們能夠構造一個語句,在不知道密碼的狀況下登錄;
$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender, FROM user WHERE (name = '$user ') #' OR email = '$user') AND pass = '$pass'");
修改完後重啓一下服務器:
sudo service apache2 restart
咱們在$user後面加上) # 這樣就會只驗證用戶名,後面的會被#註釋
arp欺騙攻擊
首先準備三臺實驗用虛擬機,分別是kali(攻擊機),Metasploitable—ubuntu(一號靶機,做爲FTP服務器),Metasploitable—win2k(二號靶機,做爲FTP服務器訪問者)。
分別記錄下三臺計算機的IP地址和MAC地址,分別爲:
而後,咱們用kali主機,來ping另外兩臺主機,目的是獲取它們的ip和mac的對應關係,ping完以後拿arp -a命令進行查看。
這時,咱們打開kali主機的wireshark來進行抓包,抓包的過濾條件爲(tcp or arp) and (ip.addr==222.28.136.122 or ip.addr==222.28.136.226 or ip.addr==222.28.136.223)
而後就要開始用netwox工具進行ARP報文欺騙了,以下
選擇5號結點(在命令行中工做),33號工具(構造以太網ARP數據報)
最後咱們開始製做ARP報文,根據如下圖片中的參數顯示,咱們只需填寫上相應的MAC地址和IP地址便可
將這兩個報文發送出去,以後咱們就能查出欺騙的mac和ip的對應信息
當兩臺靶機保存了錯誤的arp信息以後,咱們用ubantu去訪問win2k的FTP服務
而後在kali中用wireshark進行抓包,篩選,能夠看到下面的結果
監聽到了兩個靶機之間的通訊數據包。
ICMP重定向攻擊
首先查看靶機ip地址:222.28.136.122,攻擊機的ip地址:222.28.136.223
咱們打開wireshark,輸入判斷條件
(tcp or arp or icmp) and ip.addr == 222.28.136.122
準備抓包。
這時咱們開啓netwox進行ICMP路由重定向,使用第netwox工具,按照工具提示進行數據包的篡改,以下圖
咱們開啓wireshark,用靶機ping baidu.com,能夠看到wireshark馬上截獲了靶機發往目標服務器的的相關報文,以下圖所示:
而後這時咱們再查看靶機的路由表,和以前的相對比,靶機已經錯誤的將網關更改成了咱們的攻擊機的IP地址