• Ctfshow


    假赛生

    <?php
    session_start();
    include('config.php');
    if(empty($_SESSION['name'])){
        show_source("index.php");
    }else{
        $name=$_SESSION['name'];
        $sql='select pass from user where name="'.$name.'"';
        echo $sql."<br />";
        system('4rfvbgt56yhn.sh');
        $query=mysqli_query($conn,$sql);
        $result=mysqli_fetch_assoc($query);
        if($name==='admin'){
            echo "admin!!!!!"."<br />";
            if(isset($_GET['c'])){
                preg_replace_callback("/wW*/",function(){die("not allowed!");},$_GET['c'],1);
                echo $flag;
            }else{
                echo "you not admin";
            }
        }
    }
    ?>
    

    提示1是register.php,访问是注册页面

    提示2是login.php,访问是登陆页面

    从源码看,登陆用户名需要是admin,访问login.php,注册一个admin,密码随意,返回

     not register admin
    

    注册的不是admin($name==='admin'),登陆会失败

    select pass from user where name="admin2"
    

    那么在admin后面加个空格如何,去登陆就能成功了,显示

    admin!!!!!
    you not admin
    

    因为没有传参c,所以

    echo "you not admin";
    

    有关正则匹配的知识
    w:用于匹配字母,数字或下划线字符;
    W:用于匹配所有与w不匹配的字符;
    “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次;

    因此乍看题目正则匹配过滤了一切字符,其实没有过滤空格

    传参c为空格,就能返回flag

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    mysql主从配置的过程
    redis 命令行客户端utf8中文乱码问题
    十五分钟介绍 Redis数据结构--学习笔记
    70路小报:用PV和UV作为网站衡量指标已经过时
    安装redis环境
    网站统计IP PV UV实现原理
    服务器启动脚本 /etc/rc.local
    LeetCode: Longest Valid Parentheses
    LeetCode: Next Permutation & Permutations1,2
    LeetCode: divideInteger
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12860548.html
Copyright © 2020-2023  润新知