瀏覽器位址列主機IP混淆寫法
阿新 • • 發佈:2019-01-08
有一些很奇怪的主機地址寫法,可以讓其完全混淆,雖然RFC要求規範的IP地址,但是應用程式往往不那麼聽話,將原本的IP地址做進制變換和組合,其實瀏覽器都可以接受。
比如以下幾種地址完全等價:
http://127.0.0.1/
http://0x7f.0x0.0x0.0x1/ 十六進位制
http://0177.00.00.01/ 八進位制
十進位制,十六進位制,八進位制都可以接受。
還有更混淆的方式:
http://0x7f.1/
上面是將第一個8位(IP地址共32位,每8位用10進位制數表示)地址用十六進位制表示,然後將後三個8位先分別用十六進位制表示,之後拼成一個十六進位制數,再轉換為十進位制來表示,就像下面這個例子:
我們有一個地址為 http://127.0.2.44/
http://127.0.2.44/
http://0x7f.556/
舉一反三,只能讓後3個8位進行轉換嗎?我們繼續往下看:
剛剛我們說了,第一個8位變為十六進位制,後3個8位變成十六進位制後再拼接轉為十進位制,這次我們讓前兩個8位變為16進位制,後兩個8位進行上面的變換,結果依舊成立!換句話說,下面五個地址完全等價:
http://127.0.2.44/
http://2130706988/
http://0x7f.556/
http://0x7f.0x0.556/
http://0x7f.0x0.0x2.44/
當然你也可以把上面的方法改為八進位制:
同樣,假如我們有地址http://127.0.2.44/
,首先將每個8位轉換為十六進位制,前一位沒有的補0,上面的地址轉換結果為:0x7f,0x00,0x02,0x2c,然後將4個數(或者後三個,後兩個,最後一個數)拼成一個數,結果為7f00022c(注意字首的0不能省略),之後,再轉為八進位制數,結果為017700001054(注意八進位制數的字首0),所以,以下四個地址完全等價:
http://127.0.2.44/
http://017700001054/
http://0x7f.01054/
http://0x7f.0x0.01054/
http://0x7f.0x0.0x2.054/
不過有個問題要注意,就是輸入到瀏覽器中被解析以後,位址列會顯示正常的IP地址,不會顯示混淆的地址。