注意:本文内容仅供学习讨论,请勿用于非法用途!

今天入住了上海的一家酒店。在使用他们提供的Wifi时出现了下面的提示: 请输入上网认证码!

虽然本人有适当的认证码,可我本着研究的心态,还是对这套认证系统做了简要的分析。

这个提示是我在键入了一个网址以后出现的。本来访问的是百度,可后来却跳转到了:(已对敏感信息进行了屏蔽)http://192.168.3.99/hotel/client/authorize_hotel.php?ip=192.168.3.159&mac=XX-XX-XX-XX-XX-XX&mode=4&userurl=http%3A%2F%2Fwww%2Ebaidu%2Ecom%2F

接下来无意中看到TCP/IP连接中自动分配的DNS地址为192.168.3.1 192.168.10.1立即明白这应该就是DNS劫持。

碰巧,前一段时间学校的DHCP出了点问题,导致教学楼断网。我在教室中利用TFTPD32搭建了临时DHCP服务器。由于教室的电脑不会经常开启,所以我和同学商讨了如何劝导其他班级主动修改IP地址的问题。当时我想到了一个点子,就是利用DNS劫持,把所有域名解析到一个内网服务器上,在服务器上放置相应告示,通过这种方式进行通知。(后来还是选择了贴公告的方式,因为感觉DNS劫持的实现太困难)

明白了原理,解决问题就简单了。修改DNS地址就能解决问题。常用的公开DNS有(个人不建议在网络正常的前提下使用以上公开DNS业务,部分互联网功能会因为你所使用的DNS受到影响)

  • 阿里DNS:223.5.5.5 223.6.6.6
  • OpenDNS:208.67.222.222  208.67.220.220  208.67.222.220  208.67.220.222
  • Google DNS:8.8.8.8 8.8.4.4

修改DNS之后,成功突破限制。