前言

今天在CNVD上面看到了个验证码逻辑漏洞,这种逻辑漏洞遇到过很多次,但一直没有从源代码分析成因,这次正好看看。

CMS信息

产生原因

简单看一下检查登陆的代码。首先就判断Code是否正确,如果不正确则直接跳出。后面还有一些对次数的限制。

我们在看下CheckCode.就是拿POST中的code跟后台session中的checkcode对比,看是否相等,这时不管是否相等session中的checkcode都会被删除。

这样看。好像是不存在问题的,那么问题在哪呢?再接着看下去

我们找下验证码的生成在哪。c=api&a=checkcode,去看看

载入了image类

验证码的生成就在这里,生成的同时,session['checkcode']也同时生成。

这时我们仔细想一想。到我们前台直接爆破,使用BurpSuite直接POST数据时,那么在第一次登陆之后,后台session['checkcode']被删除了,但是却没有生成,这时我们只要把前台的code给删除掉,这两个相比的是不是都为空呢?

直接两张图已经可以说明结果了。