一篇由绕WAF得到的启示——长短IP的进制转换

0x01 前言

最近看到一篇关于绕WAF的文章,里面有个点是这样子写的。作者把常规IP的表达形式写成了长IP的格式进行WAF绕过,当时看到是比较不懂的,经过研究之后,恍然大悟,借此机会记录一下。

既然有长IP格式,那自然少不了短IP格式。首先先来看看短IP格式。

0x02 短IP格式

通常我们需要访问本地搭建的Web服务时,都会以127.0.0.1去访问的。现在还可以直接以127.1直接访问到本地的Server,再比如访问6.6,那么访问的则是6.0.0.6,系统会自动补全。 

 

0x03 长IP格式

  • 十进制IP

除此之外,还可以用长IP格式来表达127.0.0.1,如下图所示:

 

当我们ping数字2130706433时,同样得到了来自127.0.0.1的回包。

IP地址是个32位的二进制数,表示成点分10进制,只是为了方便,如果把这32位二进制数转成10进制数,计算机也是认识的。

再比如www.baidu.com,ping一下,得到IP:39.156.69.79。

 

四位点分10进制形式的IP地址39.156.69.79代表着一组32位2进制数,如果合在一起再转换成一个10进制的数,就得到了664552783。

也就是39*256^3+156*256^2+69*256^1+79*256^0=664552783。

所以http://39.156.69.79 = http://664552783。

 

除了表达成十进制格式的IP,长IP格式还可以分成其他多种进制格式的IP。

  • 八进制IP

其实也是一样的方法,把10进制的IP转换成8进制的IP。还是39.156.69.79作为例子。

39.156.69.79 ——> 47.234.105.117

也就是把39,156,69,79四个数字分别从十进制转换成了八进制的格式,也就是得到了47,234,105,117。在访问的时候,别忘了在前面加多一个0。

所以http://39.156.69.79 = http://047.0234.0105.0117

 

  • 十六进制IP

把39,156,69,79四个数字分别从十进制转换成了十六进制的格式,也就是得到了27,9c,45,4f.

所以http://39.156.69.79 = http://0x279c454f

 

除了这些常规的转换以外,还可以不同进制混合

  • 8+10进制IP

比如上面39.156.69.79可以转换成8+10进制的组合

http://39.156.69.79 = http://047.10241359

 

  • 8+16进制IP 

http://39.156.69.79 = http://047.0x9c454f

 

0x04 总结

 这东西研究下来,说到底还是进制转换的东西。只是一直不了解这种方式还可以解析,之后在绕WAF的过程就可以使用数字把IP之间的.替换掉了,达到绕过的目的。

猜你喜欢

转载自blog.csdn.net/Z_Z_W_/article/details/107820669