實驗吧貌似有點難
知識點:empty()函數;HTTP請求頭中偽造客戶端IP地址
X-Forwarded-For繞過指定IP地址,方法:HTTP
頭添加X-Forwarded-For:1.1.1.1
(1)PHP empty()函數 用於檢查一個變量是否為空
empty() 判斷一個變量是否被認為是空的。當一個變量並不存在,或者它的值等同於 FALSE,那麽它會被認為不存在。
empty() 並不會產生警告,哪怕變量並不存在。 這意味著 empty() 本質上與 !isset($var) || $var == false 等價。
當 var 存在,並且是一個非空非零的值時返回 FALSE 否則返回 TRUE。
(2)_SERVER的問題
https://www.cnblogs.com/rendd/p/6182918.html
看到這幾行代碼,我們不難發現,如果要的到flag,那麽IPs=="1.1.1.1,而此時我們輸出的結果是“錯誤!你的IP不在訪問列表之內!”,
顯然我們的IP不是1.1.1.1.那麽我們就應該想辦法修改IP地址為1.1.1.1,這樣便能得到結果。
首先查看是否存在$_SERVER["HTTP_CLIENT_IP"],如果存在IP就是它,
否則接下來看$_SERVER["HTTP_X_FORWARDED_FOR"],
最後看$_SERVER["REMOTE_ADDR"],如果以上三個變量都不存在的話則返回0.0.0.0。
X-Forwarded-For
當我們用代理服務器的時候,X-Forwarded-For這個值記錄的是我們客戶端原本的IP地址,而非代理服務的IP,簡言之就是用來識別經過HTTP代理後的客戶端IP地址。X-Forwarded-For在頭信息中對應的就是X-Forwarded-For,是可以進行偽造的。
首先我們來講講偽造X-Forwarded-For的方法,我們可以直接使用Firefox的X-Forwarded-For header來實現,操作非常的簡單:
設置好後,刷新頁面,
二:
用Burpsuite 抓包
右鍵發送到Repeater
添加一個X-Forwarded-For:1.1.1.1或者Client-ip:1.1.1.1,然後GO
右邊返回裏
實驗吧貌似有點難