SQL注入之Sqli-labs系列第十八關(基於錯誤的用戶代理,頭部POST注入)


開始挑戰第十八關(Header Injection - Uagent field - Error based

 

常見的HTTP注入點產生位置為【Referer】、【X-Forwarded-For】、【Cookie】、【X-Real-IP】、【Accept-Language】、【Authorization】;

(1)HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器基此可以獲得一些信息用於處理。

(2)X-Forwarded-For:簡稱XFF頭,它代表客戶端,用於記錄代理信息的,每經過一級代理(匿名代理除外),代理服務器都會把這次請求的來源IP追加在X-Forwarded-For

(3)Cookie,有時也用其復數形式 Cookies,指某些網站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(通常經過加密)

(4)X-Real-IP一般只記錄真實發出請求的客戶端IP,看下面的例子,

   X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3
  代表 請求由1.1.1.1發出,經過三層代理,第一層是2.2.2.2,第二層是3.3.3.3,而本次請求的來源IP4.4.4.4是第三層代理
如果配置了X-Read-IP,將會是:

  X-Real-IP: 1.1.1.1
  所以 ,如果只有一層代理,這兩個頭的值就是一樣的
(5)Accept-Language請求頭允許客戶端聲明它可以理解的自然語言,以及優先選擇的區域方言

來吧來吧,先看看頁面長什么樣,看看和之前的也沒什么變化,只是這里多了個一個your ip address is:::1

 

搜嘎,這里估摸着是要記錄你每次訪問的ip地址,以前看到過uagent注入,翻翻文章,果斷有了騷思路。

先看看源代碼

 

看到源碼后,代碼中對uname和passwd進行了check_input()函數的處理,所以在輸入uname和passwd上進行注入是不行的,但是在代碼中,

我們看到了$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES (‘$uagent‘, ‘$IP‘, $uname)";將useragent和ip插入到數據庫中,那么我們是不是可以用這個來進行注入呢?首先這里要輸入正確的賬號和密碼才能繞過賬號密碼判斷,才能進入處理uagent部分,

 

既然這樣,我們直接在user_agent中進行測試,加入單引號后出現報錯信息,得出如下錯誤

 

 

 

猜想在數據中的sql語句為:INSEERT INTO table VALUES('User-Agent','Ip','Username')

接下來我們嘗試在User-Agent的位置進行注入測試,我們修改User-Agnet的值使其符合整個INSERT INTIO 的語法,閉合后就應該為

INSEERT INTO table VALUES('1' ,1,1)#','Ip','Username'),成功繞過

 

接下來了我們利用邏輯運算 1=0 來測試,相當於將sql語句改變成INSEERT INTO table VALUES('1',1,1=0)#','Ip','Username')

 因為1=0的運算結果為False,所以返回一個0,這樣的或我們可以用法基於錯誤的邏輯語句,利用報錯函數來進行注入,先來查下數據庫

 

同樣的,獲取表名

 

獲取字段名,這里我做演示就隨便獲取一條

獲取數據

 


免責聲明!

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



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