吵吵   2011-05-27  阅读:2,485

    为了防止恶意的登陆或者是实现自动登陆等功能,在网页验证中往往会出现验证码。看到验证码的时候看着好像是没辙了,我们怎么也搞不定了,但是仔细研究之后,我们发现其实还是有办法的。按照验证码实现的不同,我们可以分为以下几种来讨论其破解方法。www.chaochaoblog.com

    1.在验证图片的下面会有一个hidden的input来保存一个值,这样子当一个表单post的时候可以用表单中的值和你输入的值做个比较,确认你输入的是正确的。这种是做的人比较傻逼的。要突破很是简单,观察input中和图片代码之间的关系,能得出函数推导式最好,不行就一个个刷新纪录下来,做一张纪录表去一一对应。

    2.用cookie和session来纪录的。这两个都是在浏览器中看不到的,但事实上他是在http头中的,抓个包就看到了,如果用vc或者delphi写程序的话还是比较容易获取到的。按照网上的说法cookie和session的区别是cookie是保存在本地的,而session是保存在服务器上的。这个其实是误导了大家的,你想想在只有get和post的http协议中session是怎么可以判断这个用户是你呢。抓包后我们明白了,其实session是cookie头中的一种啊。区别在于cookie本地的浏览器会把它删了当过期的时候,而session呢,是在与一个网站链接关闭了后由浏览器把它删了。

     这里有个session的例子:

Cookie: JSESSIONID=3FE0C0829ACA936C8EAA91BBD9D0A561; yoyo+pet+houseecho=lao=True; ASPSESSIONIDCCSDRRRB=MIBKOEJDMFBNCGDMCHNFJJBE
  看到了没有所谓的session也只是cookie一种了。

      好了说清楚了cookie和session之后我们有个办法了。也就是找验证图片和session之间的关系,推导出函数关系式来,如果推倒不出来,碰到是随机生成图片的那种验证你去保留记录表一一对应会累死你,好在一般这种加密和简单。

   3.用到数据库的。第二种说到每次刷新cookie或session会跟着改变,他们和图片是有函数对应关系的。可是还有一种方法当你刷新的时候cookie或者session是不会变的。那它怎么去判断是那张图片呢?神奇的就是它只用一个cookie或者session,然后每次刷新的话他将图片的id或者值保存在数据库中和cookie或者session一一对应。这样子的话你连对应关系都没办法找,怎么办呢www.chaochaoblog.com

    有办法。我们先去找一个dll,这个dll能够识别一般的图片。实在不行就让我们的用户输入一次,记着只是一次。为什么呢?因为cookie或者session是不变的。只要我们不去get那个页面那么验证码就没有被刷新。那么我们只要重复去post第一个就ok了,但是如果它在数据库中加入了时间呢?比如一个或者半个小时有效?这个就回天乏力了。只有我们dll能不能识别所有图片了。多刷几次总会识别吧。况且如果是cookie的话自己伪造的永远不过期,可以直接保持登录呢。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

一条回应:“图片验证的破解方法”

  1. Susannah说道:

    I was sreiously at DefCon 5 until I saw this post.

发表评论

电子邮件地址不会被公开。 必填项已用*标注