網絡攻防 第十一週學習總結

TCP/IP實驗

實驗選擇:主機A:Seed(222.28.136.138);主機B:Metasploitable ubuntu(222.28.136.171);主機C:win2K(222.28.136.85);
BC之間進行正常通訊,A做爲攻擊機php

一、arp欺騙

主機A經過ping其餘主機,能夠獲得一個路由信息表:

選擇netwox進行arp欺騙

wireshark抓取tcp包:
html

二、SYN FLOOD攻擊

使用主機A對B實施攻擊,其原理在於A向B發送大量半鏈接的TCP請求,會填滿B的網絡緩存隊列,致使B再也不相應正常請求,以達到B網絡服務癱瘓的目的。
使用以下命令:

同時,可利用Wireshark工具抓取數據包查看:
mysql

Collabtive系統SQL注入實驗

  • SQL注入技術是利用web應用程序和數據庫服務器之間的接口來篡改網站內容的攻擊技術。經過把SQL命令插入到Web表單提交框、輸入域名框或頁面請求框中,最終欺騙服務器執行惡意的SQL命令。
  • 目標是找到方法來利用SQL注入漏洞實施攻擊,並經過掌握的技術來阻止此類攻擊的發生。web

    預備知識

一、SQL語言sql

結構化查詢語言(Structured Query Language),簡稱SQL:是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統;同時也是數據庫腳本文件的擴展名。數據庫

常見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
並配置DNS:sudo vim /etc/hosts

按i進入編輯模式,編輯文件;編輯完成後按Esc退出編輯;完成後使用 :wq 保存並退出。
配置網站文件:sudo vim /etc/apache2/conf.d/lab.conf


重啓服務sudo service apache2 restart

訪問測試:http://www.sqllabcollabtive.com

關閉php配置策略:

實驗內容

lab1 select語句的sql注入

訪問:www.sqllabcollabtive.com;當咱們知道用戶而不知道到密碼的時候,咱們能夠怎麼登錄?

查看登錄驗證文件:sudo vim /var/www/SQL/Collabtive/include/class.user.php
咱們能夠構造一個語句,在不知道密碼的狀況下登錄:

修改完後重啓一下服務器.

咱們在$user後面加上) # 這樣就會只驗證用戶名,後面的會被#註釋,咱們就能夠繞過密碼直接登陸:

lab2 update語句的sql注入

Collabtive平臺中能夠更新用戶信息,咱們要實現經過本身的用戶去修改別人的用戶信息;

訪問用戶編輯連接:http://www.sqllabcollabtive.com/manageuser.php?action=editform&id=1

在Collabtive web應用程序中,若是用戶想更新他們的我的資料,他們能夠去個人賬戶,單擊編輯連接,而後填寫表格以更新資料信息。在用戶發送更新請求到服務器,一個UPDATE SQL語句將建造在include/class.user.php。這句話的目的是修改用戶表中的當前用戶的配置信息。
有一個在這個SQL語句中的SQL注入漏洞;sudo vim /var/www/SQL/Collabtive/include/class.user.php

咱們能夠找到以下的代碼

function edit($id, $name, $realname, $email, $tel1, $tel2, $company,
              $zip, $gender, $url, $address1, $address2, $state,
              $country, $tags, $locale, $avatar = "", $rate = 0.0)
    {
    $name = mysql_real_escape_string($name);
    $realname = mysql_real_escape_string($realname);

    //modified for SQL Lab
    //$company = mysql_real_escape_string($company);
    $email = mysql_real_escape_string($email);

    // further escaped parameters removed for brevity...

    $rate = (float) $rate;
    $id = (int) $id;

    if ($avatar != "")
        {
            $upd = mysql_query("UPDATE user SET name='$name', email='$email',
                                tel1='$tel1', tel2='$tel2', company='$company',
                                zip='$zip', gender='$gender', url='$url',
                                adress='$address1', adress2='$address2',
                                state='$state', country='$country',
                                tags='$tags', locale='$locale',
                                avatar='$avatar', rate='$rate' WHERE ID = $id");
        }
    else
        {
            // same query as above minus setting avatar; removed for
            // brevity
        }
    if ($upd)
        {
            $this->mylog->add($name, 'user', 2, 0);
            return true;
        }
    else
        {
            return false;
        }
    }

咱們會發現​sql語句爲:SELECT ID WHERE name=​'$user',而且company的位置是存在注入漏洞,原理同lab1。

這樣咱們就能夠越權來修改其餘用戶的信息及密碼;咱們使用任意用戶,如: bob bob 進行登陸;

在編輯用戶的位置:user 填 ted 用戶;

Company 處填:

', `pass` = '9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684' WHERE ID = 4 # '
    注:這裏的 9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684 就是pass的md5值;

點擊修改,而後咱們退出當前用戶,使用ted用戶登陸,這個時候ted用戶的密碼應該是pass;

進度條

視頻學習(新增/累計) 教材學習 博客量(新增/累計)
目標 34個視頻 12章(網絡攻擊技術與實踐)
第一週 (實驗樓學習) (實驗樓學習) 1/1
第二週 5/5 第一、2章 1/2
第三週 5/10 第3章 1/3
第四周 5/15 第4章 1/4
第五週 5/20 第十一、12章 2/6
第六週 5/25 第五、6章 1/7
第七週 5/30 第7章 1/8
第八週 5/35 第8章、實驗一 1/9
第九周 3/38 nmap實驗 1/10
第十週 課本實驗+實驗樓學習 課本實驗+實驗樓學習 1/11
第十一週 課本實驗+實驗樓學習 課本實驗+實驗樓學習 1/12

參考資料

實驗樓 Collabtive系統SQL注入實驗

相關文章
相關標籤/搜索