写在前

如何黑掉一个验证码?很多人第一反应是验证码识别,什么预处理,提取有效信息,分割字符,识别字符,吧啦啦一长串流程……其实有时根本没那么复杂,今天就来讨论些除了验证码识别还可以怎么黑掉一个验证码。

论如何黑掉验证码

使用cookie/session记录登录失败信息
很多时候为了用户体验验证码只有在登录失败一定次数后才会弹出验证码,但是当登录失败次数被记录在cookie或session时,如果攻击者不使用cookie或每次使用新的session验证码弹出机制将被绕过。

验证码使用后不过期
通常验证码与session存在对应关系,当一个验证码验证成功后未做过期处理,攻击者则可反复使用这组验证码和session;当一个验证码验证失败后未做过期处理,则可能会被暴力破解。

验证码使用后过期处理不及时/过期机制可被绕过
如果验证码更新不及时或更新机制可以被绕过将导致攻击者仍旧可以使用用过的验证码。

将验证码的值返回客户端
将验证码的值通过response、cookie等方式返回给客户端将会使验证码失去存在的意义,即使使用md5等方式返回也同样存在这种风险。

验证码可预测
如可根据验证码生产算法预测出验证码的值。

验证码的值域太小
如果验证码的值只有10个,那么攻击者随便尝试一个就有10%的正确率。

无超时/超时时间过长
验证码无超时或超时时间过长可能会给人工打码提供机会,如先收集验证码及对应的session,然后进行人工识别,在需要时再取出人工识别过的验证码和对应的session使用。

绕过验证码
这个属于系统整体设计的问题,如一个功能在PC端有验证码而移动端没有的话,攻击者完全可以利用移动端的接口去实现攻击而没必要再去黑掉验证码。

验证码易识别
想想最后还是不得不讲回验证码识别,一个过于简单的验证码确实还是无法达到防御的目的地。

最后

有些话等过两天再来讲吧……

点击数:628