1. 程式人生 > >實驗吧貌似有點難

實驗吧貌似有點難

來講 nbsp war 新頁面 繞過 知識點 ren alt 警告

知識點: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

技術分享圖片

右邊返回裏

技術分享圖片

實驗吧貌似有點難