百度,作为国内搜索引擎的大户,为了进一步扩大自己的用户群,专门开设了“百度贴吧”(2003年11月百度贴吧 (http://post.baidu.com)自从诞生以来逐渐成为世界最大的中文交流平台!当用户在百度搜索引擎中搜索出需要搜索的关键字,点击“贴吧”即可进入以关键字为专题的相应贴吧)的服务。操作简单而又针对性,这是贴吧火极一时的重要原因,可正因为如此,百度贴吧的安全性又怎么样呢?这就是我们今天探讨的话题!
相信大家都有在论坛灌水的经历吧?但是如果你连续发表统一内容的东西在论坛中,不久论坛的整个板块就全是你发表的信息了,其他信息全被挤在了后面。假设你发表的信息够多,版主都删不完时,那么这个论坛基本就报废了!其他的商业论坛也意识到了防止恶意灌水的重要性,纷纷使用了一些防止恶意灌水的措施,有发贴间隔时间的限制、同一IP地址的发贴数限制、内容不能重复等,但是这些都不是今天的重点,由于百度使用的是一个公用发贴表单,允许匿名发帖,需要突破唯一的难点是
验证码。(为了防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试或是防止不断提交某网络信息而采用的一种网络通行方式。随机生成字符信息放入图片中,防止计算机直接识别。比如招商银行的网上个人银行,腾讯的QQ社区等等)
这时验证码在整个系统中就扮演了了一个至关重要的角色。如果我们能突破它,写一个自动发布的程序,那么我们来算一算:假设每两秒程序post一次,一分钟就是30次、 一小时就有30×60=1800次、 一天就有1800×24=43200次!如果我们把发贴程序或是密码穷举程序挂在很多肉鸡上,进行同时工作,那么结果可想而知!笔者曾亲目睹过国内某著名安全论坛就是验证码被人破解,导致被人恶意灌水,最后完全崩溃!当然还有某网络银行也因此类原因导致用户密码被盗等众多事件。笔者也作如下声明:下文介绍的方法并不是有意针某公司或是某机构,只是作为技术交流,如果部分读者利用本文介绍的方法进行破坏或是穷举他人密码,这已经违法了法律,那么责任由他自己承担,与笔者无关!
好了,我们可以进入正题了(以下出现的代码为delphi写的部分源码,为了防止任意利用,我以介绍方法为主,如果读者感兴趣,可以自己组合编写完整,在本文附带的程序中,笔者提供了一个验证码参数确定程序(附源码))。验证码分为如下几类:数字型、字符型、符号型、综合型。
我们看了看百度贴吧的验证码如图: 是属于数字型的!不过其图片中生成了不少彩色和黑白的噪音点(指验证图片上的斑点)。那么我们应该怎么去识别呢?传统的验证码识别方式很简单,由于数字的位置是固定的,所以我们只需要提取每一幅数字的图片(没有噪音点的)然后把每一个特殊数字独有的象素位置记录下来,然后在网络上提取需要破解的特征码,祛除噪音点,对其位置和记录位置进行比对,那就是么就能确定相应的数字了。