SQL注入之Sqli-labs系列第一關


         在開始接觸滲透測試開始,最初玩的最多的就是Sql注入,注入神器阿D、明小子、穿山甲等一切工具風靡至今。當初都是以日站為樂趣,從安全法實施后在沒有任何授權的情況下,要想練手只能本地環境進行練手,對於sql注入的練習場網上有大把的靶場,我個人比較喜歡sqli-labs這個靶場,關卡有幾十個,每一關都有不同的感覺。寫這篇文章是個人再練習注入的時候自己總結出來的一部分經驗,百度上面也能搜的到相關類似的過關技巧,至於為什么要寫這個,這相當於對自己經驗的一個總結吧!關於搭建請自行github進行查看,這里我就有不多說了,地址:https://github.com/Audi-1/sqli-labs

    廢話不在多說  let's go!   開始挑戰第一關(Error Based- String)

 訪問我們的地址http://localhost:81/sqli-labs-master/Less-1/index.php,然后構造下注入環境,根據頁面提示需要加入一個數字參數,直接加入?id=數字或者其他都可以。

 

這里為了方便查看自己輸入的sql語句是帶到數據庫中是怎么樣的,可以在代碼中加入 echo "$sql<br>";

老規矩,輸入and 1=1 來進行判斷,顯示正常

 

繼續輸入and 1=2來判斷,瓦特,既然沒有任何的反應

 

既然這樣無效,直接輸入單引號看是否會提示報錯

很明顯出現了錯誤,這里我們將錯誤提示拿出來進行分析,從下圖中很容易就看出了門道

我們來試着構造下它的sql語句,由於mysql會將你輸入的內容帶入數據庫后強制轉換成字符串,所以這樣一來我們就可以采用閉合單引號的方式進行注入了

 但后面還有個limit 0,1,  直接再采用注釋符將后面的內容給干掉,常用的單行注釋符有(# , --+),個人比較喜歡#,來吧,開干吧!

輸入 ‘  and ‘1’ =‘1閉合后,回顯正確

在輸入  ‘  and ‘1’ =‘2返回錯誤  

 

前面已經測試了存在注入,現在就開始使用 order  by 猜解字段數了,這里我就不一一去試了,正確是3個字段數

 

使用union  select進行聯合查詢,再加入-號或者and 1=2讓其報錯

 

進入下面的操作前,先介紹幾個函數:

  (1)version():查看數據庫版本

  (2)user():查看當前用戶

  (3)database():查看使用的數據庫

  (4) limit  :limit子句來分批獲取所有數據

  (5)group_concat():一次性獲取數據庫信息

查看數據庫,版本,當前用戶

可以看出數據庫版本是5.0,直接爆出所有表名,數據庫名轉成16進制,這里可以使用小葵轉換工具,或者使用火狐的hackbar工具直接轉換

 

接下來獲取字段名

獲取數據,加入0x5c是為了便於查看

 

        好了,第一關比較簡單,有些肯定會有疑惑,為什么要去看information_schema庫,tables,table_schema,table_name都是這么來的, 要學習sql注入,你必須先了解數據的結構,建議使用數據庫管理工具一查便知,我這里就不多做解釋。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM