实验吧-PHP大法-eregi()函数

Posted 雨九九

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验吧-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编码

 

以上是关于实验吧-PHP大法-eregi()函数的主要内容,如果未能解决你的问题,请参考以下文章

PHP 函数 eregi()

实验吧-Web

string eregi_replace(string pattern, string replacement, string string);的使用

php 测试ereg_replace()替换eregi_replace()ereg()eregi()split()(不推荐使用php的东西)

实验吧Once More&&笔记 PHP 函数漏洞总结

表单未发送,不推荐使用函数 eregi() [重复]