在网上买火车票或参加电商秒杀抢购活动的时候,经常会看到验证码,这个验证码到底是用来干嘛的?隔壁的程序猿滔滔不绝的讲解三天三夜,乌云君精简一下答案:“验证码就是用来判断你是不是人...”
这是自互联网自发明以来用户体验最差的事物,没!有!之!一!(虽然有人尝试把他变的有趣,比如用鼠标拖动小白兔将其准确的拖进大灰狼嘴里...)
他的流程是抛出不可预测的信息强制用户反馈,以结果正确性判断是人而非机器(刷票、刷单程序等)在操作。
验证码进入人机对抗的时代后,不甘被限制的黑客们对验证图像二值化、去色、降噪、切割对比、帧数放慢等方式给自动识别出来,所以如今的验证码为了反识却变的更反人类,比如这样
这样
这样
或是这样
用户:你是不是不把我们当人看。。。
讽刺的是,程序可能还是会识别出显示内容,所以还是让我们考虑考虑那个大灰狼吃小白兔的设计吧。
今天微博上有人@给乌云君的一张图,广泛引起了网友的兴趣,我取了改图中最关键的部分:
你有没有发现其中的亮点呢?
验证码的每个数字都是单独的图片,而且图片的命名采用了 img0.gif,img1.gif 这种方式,标记自己是什么数字。
简单举例,假如验证码图片是1000,那HTML中现实验证码的地方就会这样输出图片:
<img src="images/img1.gif">
<img src="images/img0.gif">
<img src="images/img0.gif">
<img src="images/img0.gif">
我不用看图,只要用程序读取HTML源码就知道现在显示的验证码是什么,做一些人类做不到的事情,hoho,今天没吃药,感觉自己萌萌哒。。
那国际上那些互联网大佬们是怎么设计验证码的呢?是否很可靠呢?看看Google高大上的云验证码系统,reCaptcha!
什么是reCaptcha?
reCaptchas是由Google提供的基于云的验证码系统,通过结合程序生成的验证码和较难被OCR识别的图片,来帮助Google数字化一些书籍,报纸和街景里的门牌号等。
高大上么?随机的背景、角度、大小、粗细、长度。。。都是不同的,极大的增加了自动识别的难度,而且心地善良的Google给reCaptcha加入了声音验证码的功能,用来给盲人提供服务。
万万没想到的是,恰巧是这么一个贴心的验证码功能,却被自家服务给放倒,这就是Google的Web Speech API语音识别系统(语音输入的东西)。利用方式很显而易见了,让 reCaptcha 读出复杂的验证码,然后抓取音频文件,分析转码,提交给Google的语音识别系统进行结果识别。
本是同根生,相煎何太急。。。以上案例都过于学术化,真正可行并且付出实战代价太高了,仅仅被牛人们当做一种技术挑战了,牛人的世界俺们不懂。
从实际角度来讲,国内互联网验证码面临的威胁都有哪些呢?
1,设计简单导致识别
案例:
新版中国*通验证码可被简单识别
http://www.wooyun.org/bugs/wooyun-2010-058242
1230*弱验证码可被轻松识别
http://www.wooyun.org/bugs/wooyun-2013-046655
设计的比较简单,很容易被识别,比如年初的12306自动填验证码刷票插件利用的技术,后来提高了验证码难度进行封杀,抢票用户叫苦不迭。
2,验证码作废机制不当
华*某处设计缺陷验证码成摆设
http://www.wooyun.org/bugs/wooyun-2010-059382
进行操作后发现验证码没变,那么可以固定验证码后进行程序化海量发包操作。
3,疏忽接口
1230*订单提交逻辑设计有权限导致可以绕过验证码直接提交订单
http://www.wooyun.org/bugs/wooyun-2014-049555
有的接口他就是忘了开或没法开验证码功能,能怎么办?
4,人海战术
这个是验证码突破技术的必杀技,几分钱一个验证码回报给一些在校学生帮忙填写,人肉识别!
原始阅读:
常见验证码的弱点与验证码识别
http://drops.wooyun.org/tips/141
用Google语音识别API破解reCaptcha验证码
http://drops.wooyun.org/papers/1524
-----------------------------------------
乌云君的:
微博 http://weibo.com/wooyun2
微信 wooyun_org
知乎专栏 http://zhuanlan.zhihu.com/wooyun
联系邮箱 [email protected]
本文始发于微信公众号(乌云漏洞报告平台):你是逗B派来的验证码么
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论