开发者俱乐部

标题: 使用F-Login对Wooyun登陆进行爆破撞库 [打印本页]

作者: dragonegg    时间: 2016-3-4 12:39
标题: 使用F-Login对Wooyun登陆进行爆破撞库
Author:数据流
工具下载 http://zone.wooyun.org/content/25606

乌云验证码 http://wooyun.org/captcha.php
乌云验证码使用了不同颜色的背景


而第一种背景的二值化阀值是22

另一种的阀值的是220

工具里可以直接填写两个阀值,当22识别不出就会用220的阀值进行分割

到字符设置界面,手动输入验证码进行训练(回车输入,Esc键忽略当前验证码,跳入下一张验证码)

采集了20多张准确率在100%了,直接文件-保存,导出配置文件。

然后打开F-Login

先分析下乌云的登陆过程
http://wooyun.org/user.php?action=login
<script type="text/javascript">
  var loginToken='ae84d802d8ed63fe1b962ceccaf1e961r8e96ta8ugsde54qlhiijj0a67';
。。。。。。
   
  $(function(){
    $('#subbtn').click(function(){
      var email=$('#email').val();
      if(email==''){
        alert(_LANGJS.EMAILL_NULL);
        return false;
      }
      var pwd=$('#pwd').val();
      if(pwd==''){
        alert(_LANGJS.PASSWORD_NOTING);
        return false;
      }
      var captcha=$('#captcha').val();
      if(captcha==''){
        alert(_LANGJS.CAPTCHA_NULL);
        return false;
      }
      captcha=captcha.toLocaleLowerCase(); //验证码转为小写
      pwd=htmlspecialchars(pwd); //密码html转义
      pwd=addslashes(pwd);
      pwdnew=hex_md5(hex_md5(email+hex_md5(pwd))+captcha); //MD5(MD5(登录邮箱+MD5(密码))+当前验证码)
      $.ajax({
              type: "post",
              url: "user.php?action=login&do=login", //登陆请求地址
              data:{
                  token : loginToken,
                  email : email,
                  password : pwdnew,
                  captcha : captcha
              },
              dataType: "json",
              success: function(data){
                  if(data.code=='A0001'){
                      alert(data.msg);
                      location.href=data.url;
                  }else{
                      location.href ='/';
                  }
              }
          });
    });
  });
。。。。。。
</script>

除了登陆密码使用多种加密,而且还有token
表达式token=('|")(?<token>.*?)\1
var loginToken='ae84d802d8ed63fe1b962ceccaf1e961r8e96ta8ugsde54qlhiijj0a67';
这项使用F-Login的内置函数可以轻松替换
${表达式}(区分大小写 仅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}
注:密码字典支持通配符
{USER} - 将被替换成字典中的用户名
      - 用户名若是邮箱替换成@左边部分
{DL} - 域名左边部分(前缀)
{DM} - 域名中间部分
{DR} - 域名右边部分(后缀)

后三者需要从界面手动输入
若没有输入字典出现对应通配符时忽略该密码

代理字典格式:
IPORT

根据内置函数可构造出
token=${REG[token]}&email=${USER}&password=${MD5_32(MD5_32(USER+MD5_32(PASS))+LOWER(VER))}&captcha=${VER}的POST数据



乌云登陆错误返回的是一串带有unicode的字符

注意此处的特殊字符要用斜杠转义
感谢@Jeary提供的乌云用户email,我们用非常简单的字典进行小范围测试,就爆破出三个账号了。估计精心构造一个字典和撞库可以爆出不少


爆破出来的账号都是路人,另外乌云网站本身有限制,要是超过2个线程就会出现操作异常,无法继续爆破。建议爆破测试使用一个线程。


还可以转走wb

看了下某宝 我觉得我们又发现一个财路了。。




作者: 匿名    时间: 2021-8-28 23:56
Hello. And Bye.





欢迎光临 开发者俱乐部 (http://xodn.com/) Powered by Discuz! X3.2