《網絡攻擊與防範》第十一週學習總結

20169308 2016-2017-2 《網絡攻擊與防範》第11周學習總結

Collabtive系統SQL注入實驗

SQL注入技術是利用web應用程序和數據庫服務器之間的接口來篡改網站內容的攻擊技術。經過把SQL命令插入到Web表單提交框、輸入域名框或頁面請求框中,最終欺騙服務器執行惡意的SQL命令。php

預備知識

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

二、SQL注入
SQL注入:SQL注入能使攻擊者繞過認證機制,徹底控制遠程服務器上的數據庫。SQL是結構化查詢語言的簡稱,它是訪問數據庫的事實標準。目前,大多數Web應用都使用SQL數據庫來存放應用程序的數據。幾乎全部的Web應用在後臺都使用某種SQL數據庫。跟大多數語言同樣,SQL語法容許數據庫命令和用戶數據混雜在一塊兒的。若是開發人員不細心的話,用戶數據就有可能被解釋成命令,這樣的話,遠程用戶就不只能向Web應用輸入數據,並且還能夠在數據庫上執行任意命令了。web

三、SQL注入危害sql

  • 非法讀取、篡改、添加、刪除數據庫中的數據。
  • 盜取用戶的各種敏感信息,獲取利益。
  • 經過修改數據庫來修改網頁上的內容。
  • 私自添加或刪除帳號。
  • 注入木馬等等。

四、環境搭建數據庫

  • 啓動mysql
    編程

  • 啓動Apache
    vim

  • 配置DNS
    安全

  • 配置網站文件

    服務器

  • 訪問測試:http://www.sqllabcollabtive.com
    網絡

  • 關閉php配置策略


實驗內容

lab1 select語句的sql注入

查看登錄驗證文件,找到其中第375行,構造一個語句,在不知道密碼的狀況下登錄,修改完後重啓一下服務器
咱們在$user後面加上) # 這樣就會只驗證用戶名,後面的會被#註釋




lab2 update語句的sql注入

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

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

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

  • 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;
    }
    }
    `

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

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

學習進度條

完成SQL注入實驗

參考資料

相關文章
相關標籤/搜索