那些不为人知的ip

一、短ip

作为it从业人员,我们都知道以127开头的ip,都是指向本机的,比如127.9.9.9

但是,你知道127.1是指向哪里么,没错就是127.1,没有少什么

如果你不清楚的话,可以ping 一下看看,也可以本地开启webserver,打开http://127.1看看,看到了什么?

居然直接访问到了本地站点有木有?!

127

 

为什么会这样呢?

因为,当你访问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有木有啊!!

10

 

为什么一个十进制数“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漏洞可以绕过呢

3 thoughts on “那些不为人知的ip

发表评论

电子邮件地址不会被公开。


*