CTFshow-Web-Session验证逻辑漏洞

一、靶场:ctfshow web11
二、解题步骤:
步骤一:打开靶场后发现有一个登录框,里面有内容,点击登录显示错误,然后下面似乎是源码泄露,应该需要代码审计

image1

点击登录后使用hackbar查看提交内容发现是123456,似乎没啥用

image2

步骤二:代码审计

<?php

function replaceSpecialChar($strParam){

$regex = "/(select|from|where|join|sleep|and|s|union|,)/i";

return preg_replace($regex,"",$strParam);

}

if(strlen($password)!=strlen(replaceSpecialChar($password))){

die("sql inject error");

}

if($password==$_SESSION['password']){

echo $flag;

}else{

echo "error";

}

?>

通过代码审计可以得到以下信息:

1、和web10相同都有一个过滤函数,并且都校验了过滤前后密码长度;

2、若输入的密码和session中的密码一致才算成功,但若是将sessionid删了(即将cookie删了,因为sessionid在cookie中),那么就没有调用对应的session,那结果就是空,再提交空密码,即可成功绕过。

解题方法:F12打开检查,打开应用程序(application),删除cookie条目,然后以空密码形式登录即可

步骤三:删除cookie条目,空置密码,直接登录获取flag

image3

image4

posted @ 2025-12-03 09:33  shinianyunyan  阅读(7)  评论(0)    收藏  举报