CTF web之旅 30

ctfshow web12

查看php

<?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";
        }
    ?>
 if($password==$_SESSION['password']){
            echo $flag;

这是关键
需要让传入的password和session中的password进行相等
抓包查看默认传入的密码 并且发现cookie头中有phpsessid值
服务端之后每次接收到客户端的请求就都能根据这个PHPSESSID来找到服务端的session文件
PHPSESSID为空 服务端的session文件查不到$_SESSION['password']结果 返回为空

 和上题一样的思路  空等于空进行绕过

 go 得到flag

ctfshow{1c581c96-f129-4b07-b592-3f1ac614cc1e}

 
原文地址:https://www.cnblogs.com/akger/p/14685339.html