ctfshow--web9 md5二进制格加密的绕过

dirsearch 扫到robots文件
查看一下 发现有个index.phps文件
image
访问这个index.phps,可以下载下来
我们来审计一下这里的代码
<?php $flag=""; $password=$_POST['password']; if(strlen($password)>10){ die("password error"); } $sql="select * from user where username ='admin' and password ='".md5($password,true)."'"; $result=mysqli_query($con,$sql); if(mysqli_num_rows($result)>0){ while($row=mysqli_fetch_assoc($result)){ echo "登陆成功<br>"; echo $flag; } } ?>

不太清楚怎么绕过
上网查了查原话是那么说的:

MD5函数第二个参数默认值为false,表示会产生一个32位的常规MD5值。而true,则是原生的16字符的二进制格式,这意味着,这里有可能人为输入一个字符串,经加密后的值以二进制格式生成,又被当字符串处理,很可能新的字符串中含有可以构造SQL万能密码的'or'的部分。

正好网上有两个这样的字符串,一个是和解题链接的文件名一样的字符串:ffifdyop,另一个是:129581926211651571912466741651878684928。将任意一个输入进去,即可绕过验证。(很明显,这里更倾向于让你用ffifdyop)

输入ffifdyop就可拿到flag了
image

posted @ 2024-04-04 10:13  WSssSW  阅读(9)  评论(0编辑  收藏  举报