from:http://zone.wooyun.org/content/25606
当在安全测试时候,遇到有验证码的后台通常都不知道要怎么处理,F-Login 就是为此开发出来的,比起现一些其他同类某工具增加了一些自己的想法。
本工具的的编写思路已发布在drop http://drops.wooyun.org/tips/13043
*支持系统字库识别
*支持手动采集识别
*支持内置函数
简单使用说明:(更多请下载后见使用说明)
F-Login
使用F-login要先使用F-Verify Config Tool,就是验证码文件配置工具,在使用F-Login进行爆破时要先导入由配置工具生成的.ci或者.ci.png配置文件。
F-Verify 配置工具
填写验证码url,点击open,调节二值化阀值让验证码看得清楚为止(可以设置多个阀值)。
打开字符配置菜单的采样功能,建议选用手动采样,因为选择的字库和验证码本身的字体有差距的话 可能会出现识别误差 毕竟没有去调用别人的裤识别,所以还是建议选用手动采用。在左下角输入右边的验证码回车结束(重复的图像并不会被采集),采集的验证码越多识别率就越高。 标准字体基本上可以达到100%的准确率。另外在输入的时候 如果有些被框出来的不想要的一些东西可以输入减号【-】将框出来的东西记录 在识别的时候忽略被框出来的东西
当你手动采集到满意识别结果时,可在左上角文件-保存,到出配置文件。
当导出配置文件后打开F-Login 按照提示输入url和导入配置文件
${表达式}(区分大小写 仅URL中生效)
内置变量:
USER -> 用户名
PASS -> 密码
VER -> 验证码
REG[name] -> 正则匹配的数据
内置函数:
string UPPER(string text) -> 转换成大写
string LOWER(string text) -> 转换成小写
string MD5_16(string text) -> 获取16位md5(utf8)
string MD5_32(string text) -> 获取32位md5(utf8)
string BASE64(string text) -> 获取base64字符串(utf8)
string MD5_16(string text,string charset) -> 获取16位md5(指定编码)
string MD5_32(string text,string charset) -> 获取16位md5(指定编码)
string BASE64(string text,string charset) -> 获取base64字符串(指定编码)
double RND_D() -> 返回 0-1之间的随机浮点数
int Rnd_I(int nStart,int nEnd) 返回nStart-nEnd(不包括nEnd)之间随机整数
如:
http://www.baidu.com/login.php?u=${USER}&&p=${MD5_32(PASS+UPPER(VER))}&&v=${UPPER(VER)}
http://www.baidu.com/login.php?u=${USER}&&p=${BASE64(VER)}&&v=${VER}
http://www.baidu.com/login.php?u=${USER}&&p=${BASE64(VER,"utf-8")}&&v=${VER}
http://www.baidu.com/login.php?u=${USER}&&p=${MD5_32(VER,"gb2312")}&&v=${VER}
由于此后台密码传输是用md5(md5(密码)+验证码),但利用本工具内置函数可轻松实现。
双击列表即可查看对应的包数据
【验证码识别接口】
VerifyTool.exe
此工具用于其他程序调用使用 如:python# coding: UTF-8
import os
result = os.popen('verifytool.exe D:\woo.ci.png -f D:\woo-verify.png').readlines()
print (result)
在我的D盘有这样一张图
代码执行后的效果
其他调用方式自己测试 不过建议使用 -p 方式 如下# coding: UTF-8
import urllib2
from socket import *
h = urllib2.urlopen('http://www.wooyun.org/captcha.php')
str = h.read() #获取验证码
s = socket(AF_INET,SOCK_DGRAM);
s.sendto(str,('localhost',14250)) #将获取到的验证码发送给识别程序
code = s.recvfrom(65500) #接受识别出来的验证码
print(code)
如果程序是.NET平台编写 则可直接使用VerifyReader.dll文件 将其添加引用然后:CodeInfo ci = CodeInfo.LoadFromFile("D:\woo.ci.png");
CodeHelper helper = new CodeHelper(ci);
string code = helper.GetCodeString(Image.FromFile("D:\woo-verify.png"));
下载地址:
http://down.future-sec.com/VerifyReader-1.1.zip
--By:伏宸安全团队(2016-2)
本文始发于微信公众号(关注安全技术):F-Login 1.1 验证码识别登录爆破
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论