分类
mysql php

MD5加密下的SQL注入

$sql=”select password from users where password='”.md5($password,true).”‘”

这里面的md5()函数有两个参数,一个是要加密的字符串,另一个是输出格式,具体是

raw可选。规定十六进制或二进制输出格式:TRUE – 原始 16 字符二进制格式FALSE – 默认。32 字符十六进制数

但是组成查询语句的时候这个hex会被转成字符串,如果转换之后的字符串包含’or'<xxx>,就会和原查询语句一起组成

如以下代码:

<?php
$password = 'ffifdyop';
$sql1="select password from users where password='".md5($password,true)."'";
$sql2="select password from users where password='".md5($password)."'";

echo "<pre>";
var_dump([
'raw_output_true' => $sql1,
'raw_output_false' => $sql2
]);

输出的结果如下

发表评论

邮箱地址不会被公开。 必填项已用*标注