存在注入么??

作者:MA2安全团队 分类: 信息安全 发布于:2018-2-19 15:49 ė703次浏览 60条评论
   今天在打CTF的时候发现了一段PHP代码。这里摆出来大家看看。

        $password=$_POST['password'];
$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
$result=mysqli_query($link,$sql);
if(mysqli_num_rows($result)>0){
echo 'flag is :'.$flag;
}
else{
echo '密码错误!';


     这里能提交的数据是password。在不知道password的真正值的时候能不能拿到flag呢?

先来分析下代码:提交的password计算出散列值。然后查询数据。存在为真,输出:flag,不存在为假,输出:密码错误。

这里先看下常规存在的注入语句:$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '$password'"

比较下看出仅多了一个散列值的计算。

    现在就有了思路:当md5后的hex转换成字符串后,如果包含'or'<trash>这样的字符串,

     那整个sql语句就变成了:SELECT * FROM admin WHERE pass = ''or'<trash>' 

    这样就存在了注入。

    把'or'<trash>转hex然后把得到的值解MD5。最后得到  ffifdyop

             即为对症下药的注射!

TIM截图20180219162243.pngTIM截图20180219162325.png

     注入文化博大精深,还得好好学习,好好学习。

                                                                                                                                                           ----H.U.C--黑少


    

本文出自 MA2安全网,转载时请注明出处及相应链接。

发表评论

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


Ɣ回顶部