zoukankan      html  css  js  c++  java
  • 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题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    兼容火狐回车事件
    html的锚链接位置偏差解决
    jq记住密码
    PHP界面显示中文乱码
    ThinkPHP5.0学习1
    Fatal error: Call to undefined function pasterTempletDiy()
    dede问答模块修改
    PHP:Deprecated: Function set_magic_quotes_runtime() is deprecated 错误
    jq根据文本显示内容设置样式
    Tomcat Remote Debug操作和原理
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12860548.html
Copyright © 2011-2022 走看看