验证码爆破总结及python实现爆破功能

  • 2019 年 10 月 7 日
  • 筆記

本文作者:Junsec(Ms08067实验室Python渗透小组成员)

验证码生成分为两种:

1.本地js生产验证码。

2.请求url刷新验证码,代码根据这种情况编写。.

功能简介:

-u 用户名

-t 后台地址

-p 字典地址

-c 验证码地址

-k 使用云打码平台识别验证码,默认使用为pytesseract识别验证码

用法:

python test_captche.py -u admin -t http

://172.13.98.57/login.php -c

http://172.13.98.57/inc/showvcode.php -p src.txt -k

思路分析:

1.创建cookie容器存放cookie,将cookie保存到全局变量,保存验证码到本地识别。

2. 定义参数key,如果使用参数为云打码平台,一键识别函数定义用户名和密码,识别本地验证码,返回识别的验证码;否则导入pytesseract库识别验证码,通过函数imag_to_string识别本地验证码。

3.定义随机请求头,使用random.choice随机选择请求头,加上1到2秒的延迟,防止waf或者检测设备判断为爬虫,或者爆破。

4.F12查看登陆失败的错误提示,判断是否爆破成功,也可以根据登陆成功的响应码判断是否登陆成功,如302跳转。

5.读取字典,调用函数request_post开始发送post请求,爆破后台网站。

6.读取外部参数,如果username和passfile都不为空,开始读取字典,爆破后台。

7.效果图

-u 用户名

-t 后台地址

-p 字典地址

-c 验证码地址

-k 是否使用云打码平台识别验证码

总结:1.请求验证码地址获取cookie。

2.识别验证码。

3.开始爆破,发送post请求。

代码写得不太完善,测试结果也不太理想,因为随机延迟,效率太低了,自己心目中的代码,应该加上ip代理池和多线程绕过防护,请求表单使用模块自己抓取,不用每次手动加上,密码读取应该加上密码喷洒,可以使用同一密码对多个用户爆破;下次在重写下,代码更加完善。

https://github.com/AdministratorGithub/baop