zoukankan      html  css  js  c++  java
  • 实验吧-PHP大法-eregi()函数

    题目地址:http://www.shiyanbar.com/ctf/54

    题目:

    <?php
    if(eregi("hackerDJ",$_GET[id])) {
      echo("<p>not allowed!</p>");
      exit();
    }
    
    $_GET[id] = urldecode($_GET[id]);
    if($_GET[id] == "hackerDJ")
    {
      echo "<p>Access granted!</p>";
      echo "<p>flag: *****************} </p>";
    }
    ?>
    
    
    <br><br>
    Can you authenticate to this website?
    PHP 函数 eregi()
    语法
        int eregi(string pattern, string string, [array regs]);
    定义和用法
    eregi()函数在一个字符串搜索指定的模式的字符串。搜索不区分大小写。Eregi()可以特别有用的检查有效性字符串,如密码。 
    
    可选的输入参数规则包含一个数组的所有匹配表达式,他们被正则表达式的括号分组。
    
    返回值
    如果匹配成功返回true,否则,则返回false
    
    Example
    下面是一段代码,这段代码复制并粘贴到一个文件中并验证结果。
    
        <?php
    
        $password = "abc";
        if (! eregi ("[[:alnum:]]{8,10}", $password))
        {
           print "Invalid password! Passwords must be from 8 - 10 chars";
        }
        else
        {
          print "Valid password";
        }
        ?>
    这将会产生以下结果:
    
        Invalid password! Passwords must be from 8 - 10 chars

    解题思路:

    id变量是一个url解码函数前不包含hackerDJ,url解码函数后为hackerDJ的变量,即id在进入url解码函数前必须是hackerDJ的url编码形式

     注意:

    id通过url形式传递,浏览器会自动url解码一次,直接

    ?id=%68%61%63%6B%65%72%44%4A

    是不行的

     这样浏览器自动解码后即为hackerDJ,被eregi()拦住

    所以要进行二次编码,即对%68%61%63%6B%65%72%44%4A进行url编码

  • 相关阅读:
    python简介
    计算机基础
    C# 验证数字
    在字符串指定的索引下添加字符,输出换行
    js中实现子页面向父页面中赋值
    js搜索相同类型的控件全选、取值(Checkbox)
    Nhibernate中多Or条件的查询,很多Or的查询
    js遍历checkbox获取数据
    Jquery获取web窗体关闭事件,排除刷新页面
    两年多的工作感悟
  • 原文地址:https://www.cnblogs.com/Rain99-/p/11275469.html
Copyright © 2011-2022 走看看