lake2的专栏

千秋邈矣独留我,百战归来再读书

原创 轻轻绕过你的验证码收藏

新一篇: Serv-U的反弹攻击及其利用 | 旧一篇: 伪造发件人邮件地址

Authorlake2 ( http://lake2.0x54.org )

 

验证码就是每次访问页面时随机生成的图片,内容一般是数字和字母(更BT点的有中文,呵呵),需要访问者把图中的数字字母填到表单中提交,这样就有效地防止了暴力破解。验证码也用于防止恶意灌水、广告帖等。

溯雪是早年大名鼎鼎的黑客神器“刀光雪影”之一,其功能就是暴力破解表单,那时很是很流行的。但是后来有了验证码这个东东,几乎把溯雪推向了死路。但是真的完全是死路了吗?本文给你答案。

对于验证码机制,网上的攻击手法都是利用数学方法分析图片,当然我们不能老是跟着别人的思路走噻,那样多没创意哦。

想想验证码的思路,就是每次登陆的地方访问一个脚本文件,该文件生成含验证码的图片并将值写入到session里,提交的时候验证登陆的脚本就会判断提交的验证码是否与session里的一致。

问题出现了,在登陆密码错误之后,我们不去访问生成验证图片的文件,那么如果session中的验证码没有被清空,此时验证码就是跟上次的一样,辛辛苦苦构建的防暴力破解就形同虚设了。

PowerEasy2005的管理员登陆页面就是个很好的实例,只要我们把首次访问的验证码辨认出来,以该会话cookie值不断提交就可以实现暴力破解了。图中就是用溯雪破解的结果(溯雪重出江湖咯^_^)。

类似的情况还有PJBlog2的登陆验证,其他的程序没看,体力活了,不好玩。

利用验证码的漏洞还可以实现DOS(还有刷投票之类的,呵呵),比如这个CSDN博客系统,回复的验证码就存在这个问题,所以你可以抓包不断提交(喂,先说好,不准拿我试验)。

这次动网bbs做得很好,密码错误之后session中的验证码值被置空且每次检查验证码的时候先检查是否为空。所以如果要修复这种漏洞就参考动网的办法吧。

 

发表于 @ 2006年09月15日 08:37:00|评论(loading...)|编辑

新一篇: Serv-U的反弹攻击及其利用 | 旧一篇: 伪造发件人邮件地址

评论

#萝卜 发表于2006-09-17 10:30:00  IP: 222.18.177.*
走来就汗了一把,又有新东西
#kuhanzhu 发表于2006-09-18 11:46:00  IP: 220.188.41.*
看了先,忽忽,动网好啊!
#lake2 发表于2006-09-18 21:19:00  IP: 125.71.0.*
好,那我贴到幻影去,要是你是冒充axis的我可要找你扯皮:)
#axis 发表于2006-09-18 19:42:00  IP: 220.189.213.*
赞一下

贴到幻影去吧,我给你加精!
#轨迹 发表于2006-09-19 09:48:00  IP: 221.235.105.*
不错的想法
#echo 发表于2006-09-19 11:24:00  IP: 218.19.62.*
之前俺也发现过,不过没想到用来暴力破解!
#freejanker 发表于2006-09-20 09:43:00  IP: 219.134.135.*
以前还真没怎么留意这个,好思路!不过我一般提交检测验证码后都会去清空一次验证码session的。

但如果别人的程序在第一次密码检测错误后,用的是直接跳转如response.redirect"",而不是用的客户端的跳转,那就行不通了。
#lake2 发表于2006-09-21 09:42:00  IP: 125.71.2.*
freejanker,呵呵,response.redirect真的可以防范吗?仔细想想哦
#echo 发表于2006-09-21 16:59:00  IP: 219.137.37.*
If Request.Form("code") <> "" Then
' CodeSessionName 可以更改,但需要和dvcode.asp里的一致
If Request.Form("code") <> "" And Request.Form("code") = Session("CodeSessionName") Then
Response.Write "恭喜您,输入的验证码正确!"
Else
Response.Write "<font color=red>输入的验证码错误!</font>"
End If
Session("CodeSessionName") = "" '注意,这里一定要清空,否则可能被利用
Response.Write "<hr>"
End If

好像这样就行。。。不知对不对,我一向都是这样写的
#男儿何必尽成功 发表于2006-09-23 17:36:00  IP: 58.57.54.*
lake2就是有思路,有想法。
#lake1 发表于2006-09-23 17:37:00  IP: 58.57.54.*
lake2就是有想法,有思路。
#小菜 发表于2006-10-08 16:10:00  IP: 59.41.60.*
溯雪 破动易 2005 需要设置一个 错误提示,做为判断。
想问问 lake2 用的什么值做的判断?
#小菜 发表于2006-10-08 16:11:00  IP: 59.41.60.*
溯雪 破动易 2005 需要设置一个 错误提示,做为判断。
想问问 lake2 用的什么值做的判断?
#小菜 发表于2006-10-08 16:11:00  IP: 59.41.60.*
溯雪 破动易 2005 需要设置一个 错误提示,做为判断。
想问问 lake2 用的什么值做的判断?
#sfgkwfnh 发表于2006-10-14 15:48:00  IP: 222.209.128.*
密码错误之后session中的验证码值被置空
然后又检查是否为空

高!!!
#sfgkwfnh 发表于2006-10-14 15:50:00  IP: 222.209.128.*
密码错误之后session中的验证码值被置空
又判断验证码是否为空

高!!!

不过没有绝对的安全 什么时候去学学动网自己的方法
#devms 发表于2007-03-24 14:33:29  IP: 218.107.24.*
04年的时候54nb就是这样处理验证码的了
那个时候动网还不知道在哪

验证码应用的基本法则就是取一次清一次
而不是说显示一次图片才变换一次
这么基础的法则都不知道?

#cnlcg 发表于2007-11-01 11:01:56  IP: 220.192.145.*
怎么解决两个session值同时存在的情况(一个页面我打开两次),这时的session是可以互换了,对用户来说,输入任意一个验证码都可以!依次类推。。。。。。
#cqg1220 发表于2008-08-27 11:22:29  IP: 123.112.196.*
机柜
#cqg1220 发表于2008-08-27 11:26:19  IP: 123.112.196.*
机柜
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © lake2