zoukankan      html  css  js  c++  java
  • ereg正则%00截断

     1 <?php
     2 $flag = "xxx";
     3 if (isset ($_GET['password']))
     4 {
     5 if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
     6 {
     7 echo '
     8 
     9 You password must be alphanumeric
    10 
    11 ';
    12 }
    13 else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)
    14 {
    15 if (strpos ($_GET['password'], '*-*') !== FALSE) //strpos — 查找字符串首次出现的位置
    16 {
    17 die('Flag: ' . $flag);
    18 }
    19 else
    20 {
    21 echo('
    22 
    23 - have not been found
    24 
    25 ');
    26 }
    27 }
    28 else
    29 {
    30 echo '
    31 
    32 Invalid password
    33 
    34 ';
    35 }
    36 }
    37 ?>

    首先我们看一下代码,分析一下有这么几个点

    1.password的值只能是一个或者多个数字、大小写字母;

    2.password内容字符串长度不超过8,且值要大于9999999;

    3.password最后要匹配到*-*.

    满足上面两个条件才可获得flag

    前面两个条件我们可以弱类型绕过,最后一个可以%00截断

  • 相关阅读:
    centos7安装pycharm
    centos7 mysql数据库安装
    删除MySQL服务
    计组第三章预习
    攻防世界web新手练习区
    原码补码预习
    第一次总结
    第三章预习
    数据结构十进制数表示
    预习原码补码
  • 原文地址:https://www.cnblogs.com/N-schema/p/13288398.html
Copyright © 2011-2022 走看看