一、短ip
作为it从业人员,我们都知道以127开头的ip,都是指向本机的,比如127.9.9.9
但是,你知道127.1是指向哪里么,没错就是127.1,没有少什么
如果你不清楚的话,可以ping 一下看看,也可以本地开启webserver,打开http://127.1看看,看到了什么?
居然直接访问到了本地站点有木有?!
为什么会这样呢?
因为,当你访问http访问127.1时,它实际上访问的是127.0.0.1,没错,系统自动给你补全了
各位看官可以试试访问http://8.8 ,如果你用的是chrome浏览器,它会在网址栏里自动显示补全的ip,告诉你访问的其实是8.0.0.8,其它的浏览器虽然没有在网址栏里显示,但是实际上还是自动补全访问。
二、不同进制的ip
我们以baidu的ip 115.239.210.27 为例
a、十进制ip
先来个数字1945096731
这是一串神器的数字
用浏览器访问http://1945096731 它会访问到baidu
ping它一下,居然是115.239.210.27有木有啊!!
为什么一个十进制数“1945096731”等同于一个IP地址“115.239.210.27”呢?
四位点分十进制形式的IP地址“115.239.210.27”代表一组32位二进制数码,如果合在一起再转换成一个十进制数的话,答案就是1945096731。转换方法很简单,就是数制的完全展开:
115*256^3+239*256^2+210*256^1+27*256^0=1929379840+15663104+53760+27=1945096731
(基数为256)
如果觉得这么算头晕,可以自己写个脚本算算,其实mysql有个函数也可以帮你算:
mysql> select inet_aton('115.239.210.27'); +-----------------------------+ | inet_aton('115.239.210.27') | +-----------------------------+ | 1945096731 | +-----------------------------+ 1 row in set (0.00 sec)
biu~的一下就出结果了有木有,我们再来看看短ip计算结果:
mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1'); +------------------------+--------------------+ | INET_ATON('127.0.0.1') | INET_ATON('127.1') | +------------------------+--------------------+ | 2130706433 | 2130706433 | +------------------------+--------------------+ 1 row in set (0.00 sec)
看到了么,127.0.0.1与127.1转换结果相同,这就是短ip
了解了原理,我们来看看除了http://1945096731,其实还可以表示为:
http://115.15716891
http://115.239.53787
c、八进制ip
http://0163.073751033 8进制
http://0163.15716891 8进制与10进制配合
b、十六进制ip
http://0x73.0x000EFD21B 16进制
http://0x73.15716891 16进制与10进制配合
http://115.0xEFD21B
http://0163.0xEFD21B 8进制与16进制配合
d、混合进制ip
这个发挥想象自由组合了,不举例子了~
这些有什么用?也许,某些修复不全的ssrf漏洞可以绕过呢
好变态的IP表现形式~
666
长知识了。以前还真不知道,转走了哈