0x01 开发背景

说起对存在验证码的登录表单进行爆破,大部分人都会想到PKav HTTP Fuzzer,这款工具在前些年确实给我们带来了不少便利。反观burp一直没有一个高度自定义通杀大部分图片验证码的识别方案,于是抽了点闲暇的时间开发了captcha-kille,希望burp也能用上各种好用的识别码技术。其设计理念是只专注做好对各种验证码识别技术接口的调用!说具体点就是burp通过同一个插件,就可以适配各种验证码识别接口,无需重复编写调用代码。今天不谈编码层面如何设计,感兴趣的可以去github看源码。此处只通过使用步骤来说明设计的细节。

0x02 Step1:将获取验证码的数据包发送到插件

使用burp抓取获取验证码数据包,然后右键captcha-killer -> send to captcha panel发送数据包到插件的验证码请求面板。

将请求验证码数据包发送到插件

然后到切换到插件面板,点击获取即可拿到要识别的验证码图片内容。

请求获取验证码

注意:获取验证码的cookie一定要和intruder发送的cookie相同!

0x03 Step2:配置识别接口的地址和请求包

拿到验证码之后,就要设置接口来进行识别了。我们可以使用网上寻找免费的接口,用burp抓包,然后右键发送到插件的接口请求面板。

将接口调用请求发送到插件

然后我们把图片内容的位置用标签来代替。比如该例子使用的接口是post提交image参数,参数的值为图片二进制数据的base64编码后的url编码。那么Request template(请求模版)面板应该填写如下:

接口请求模版设置

ID 标签 描述
1 <@IMG_RAW></@IMG_RAW> 代表验证码图片原二进制内容
2 <@URLENCODE></@URLENCODE> 对标签内的内容进行url编码
3 <@BASE64></@BASE64> 对标签内的内容进行base64编码

最后点击“识别”即可获取到接口返回的数据包,同时在request raw可以看到调用接口最终发送的请求包。

模版被渲染为最终的请求

0x03 Step3:设置用于匹配识别结果的规则

通过上一步我们获取到了识别接口的返回结果,但是插件并不知道返回结果中,哪里是真正的识别结果。插件提供了4中方式进行匹配,可以根据具体情况选择合适的。

ID 规则类型 描述
1 Repose data 这种规则用于匹配接口返回包内容直接是识别结果
2 Regular expression 正则表达式,适合比较复杂的匹配。比如接口返回包{"coede":1,"result":"abcd"}说明abcd是识别结果,我们可以编写规则为result":"(.*?)"\}
3 Define the start and end positions 定义开始和结束位置,使用上面的例子,可以编写规则{"start":21,"end":25}
4 Defines the start and end strings 定义开始和结束字符,使用上面的例子,可以编写规则为{"start":"result\":\","end":"\"\}"}

通过分析我们知道,接口返回的json数据中,字段words的值为识别结果。我们这里使用Regular expression(正则表达式)来匹配,然后选择yzep右键标记为识别结果,系统会自动生成正则表达式规则" (.*?)"\}\]。

设置匹配方式和自动生成规则

注意:若右键标记自动生成的规则匹配不精确,可以人工进行微调。比如该例子中可以微调规则为"words"\: "(.*?)"\}将更加准确!

到达这步建议将配置好常用接口的url,数据包已经匹配规则保存为模版,方便下次直接通过右键模板库中快速设置。同时插件也有默认的模版供大家使用与修改。

保存设置好的配置,方便下次快速配置

0x04 Step4:在Intruder模块调用

配置好各项后,可以点击锁定对当前配置进行锁定,防止被修改导致爆破失败!接着安装以下步骤进行配置

设置Intruder的爆破模式和payload位置

验证码payload选择有插件来生成

进行爆破,可以通过对比识别结果看出识别率

0x05 使用小案例

后续将通过小案例来演示,如何通过captcha-killer让burp使用上各种技术识别验证码(免费方案),敬请期待!

  • 《captcha-killer调用tesseract-ocr识别验证码》[待发布]
  • 《captcha-killer调用完美识别验证码系统》[待发布]
  • 《captcha-killer调用百度ocr识别验证码》[待发布]
  • 《capatch-killer+机器学习识别验证码》[待发布]

使用burp插件captcha-killer识别图片验证码的更多相关文章

  1. python 识别图片验证码报IOError

    说一下困扰了我一周的问题:识别图片验证码 本来我按照安装步骤(http://www.cnblogs.com/yeayee/p/4955506.html?utm_source=tuicool&u ...

  2. 【java+selenium3】Tesseract-OCR识别图片验证码 (十六)

    [java+selenium+Tesseract-OCR(图片识别)+AutoIt(windows窗口识别)]完成自动化图片验证码识别! 一.AutoIt(windows窗口识别)参考:https:/ ...

  3. python爬虫20 | 小帅b教你如何使用python识别图片验证码

    当你在爬取某些网站的时候 对于你的一些频繁请求 对方会阻碍你 常见的方式就是使用验证码 验证码的主要功能 就是区分你是人还是鬼(机器人) 人 想法设法的搞一些手段来对付技术 而 技术又能对付人们的想法 ...

  4. [Java] 识别图片验证码

    现在大多数网站都采用了验证码来防止暴力破解或恶意提交.但验证码真的就很安全吗?真的就不能被机器识别?? 我先讲讲我是怎么实现站外提交留言到一个网站的程序. 这个网站的留言版大致如下: 我一看这种简单的 ...

  5. 识别图片验证码的三种方式(scrapy模拟登陆豆瓣网)

    1.通过肉眼识别,然后输入到input里面 from PIL import image Image request.urlretrieve(url,'image')  #下载验证码图片 image = ...

  6. 【转】Python OCR识别图片验证码

    转载自:博客 对于某些网站登录的时候,往往需要输入验证码才能实现登录.如果要爬虫这类网站,往往总会比这个验证码导致无法爬取数据.以下介绍一种比较折中的方法,也是比较可行的方法: 实现思想: 1.通过截 ...

  7. python+selenium识别图片验证码

    import timeimport pytesseractfrom PIL import Image, ImageEnhancefrom selenium import webdriver url = ...

  8. python下以api形式调用tesseract识别图片验证码

    一.背景 之前在博文中介绍在python中如何调用tesseract ocr引擎,当时主要介绍了shell模式,shell模式需要安装tesseract程序,并且效率相对略低. 今天介绍api形式的调 ...

  9. java分别通过httpclient和HttpURLConnection获取图片验证码内容

    前面的文章,介绍了如何通过selenium+Tesseract-OCR来识别图片验证码,如果用接口来访问的话,再用selenium就闲的笨重,下面就介绍一下分别通过httpclient和HttpURL ...

随机推荐

  1. Web自动化测试平台设计与落地-概览

    引言 自动化金字塔-灵魂手绘版 关于Web自动化测试,投入产出比是一个绕不开的话题,对于走到2017年的测试人,这时候可能已经有很多人会想到著名的自动化测试金字塔.它形象地展示了Mike Cohn对自 ...

  2. 机器学习入门-逻辑(Logistic)回归(1)

    原文地址:http://www.bugingcode.com/machine_learning/ex3.html 关于机器学习的教程确实是太多了,处于这种变革的时代,出去不说点机器学习的东西,都觉得自 ...

  3. 使用Win10自带的虚拟机安装Linux

    Win10自带了一款虚拟机,感觉不错,可以试用一下: 安装:http://news.mydrivers.com/1/650/650018.htm 主要思路就是在BIOS里面开启CPU虚拟化,然后在Wi ...

  4. 【桌面篇】Archlinux安装kde桌面

    ArchLinux安装配置手册[桌面篇] 现在你的U盘可以拔掉了,重启后会发现和刚刚没什么区别,还是命令行的界面,别着急现在就带你安装桌面环境. 连接网络 首先检查一下网络是否连接成功 ping ww ...

  5. C++走向远洋——53(项目一1、分数类的重载、加减乘除、比较)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. 如何在自己的CSDN博客中增添【高大上】的博客栏目?

    前几天看到过一位博主的博客界面,向下看 ☟ (博主对不起啊!把你的公众号给抹了~~~),感觉做这个东西挺好玩的,而且我竟然找不到在哪个地方可以设置!在百度上也没有搜到教程,最后问了一下贺老师知道了入口 ...

  7. Java入门教程五(数字和日期处理)

    Java 提供了处理相关问题的类,包括 Math 类.Random 类.BigInteger 类.Date 类等. Math类 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数.对数.平 ...

  8. AWS EC2+Docker+JMeter构建分布式负载测试基础架构

    目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...

  9. ES6/JavaScript一些‘巧用’

    前言 第一次发表文章,如有不好的地方请见谅/ 在编写JavaScript代码的时候存在的一些方法和技巧,虽然有时候条条大路都通向罗马,但是也许总会有那么一条最短的路径可走.本文将一些都知道却不怎么用的 ...

  10. React Native 在 Airbnb(译文)

    在Android,iOS,Web和跨平台框架的横向对比中,React Native本身是一个相对较新且快速开发移动的平台.两年后,我们可以肯定地说React Native在很多方面都是革命性的.这是移 ...