BUGKU:http://120.24.86.145:9009/19.php

还没看完源码,我就直接加了一个password[]=1结果就拿到flag了。然后再看源码我自己都搞不懂为什么可以得到源码。真的,不信你看。

 <?php
$flag = "flag"; if (isset ($_GET['password'])) {
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
echo 'You password must be alphanumeric';
else if (strpos ($_GET['password'], '--') !== FALSE)
die('Flag: ' . $flag);
else
echo 'Invalid password';
}
?>

先来谈论一下标准的答案:

第一个条件:

    必须以数字或者字母开头(其实看到ereg就可以想到%00截断)

第二个条件:

    必须在password参数中找到--。

所以得出以下正解:

index.php?password=a%00--

那么话又说回来了,为什么直接password[]=a就可以绕过呢?

1.ereg只能处理字符,而你是数组,所以返回的是null,三个等号的时候不会进行类型转换。所以null不等于false。

2.strpos的参数同样不能够是数组,所以返回的依旧是null,null不等于false也是正确。

所以可以拿到flag

小结:

  1.倘若函数的参数不符合其函数要求的时候返回的是null值

数组返回NULL绕过的更多相关文章

  1. 代码审计-数组返回NULL绕过

    <?php $flag = "flag"; if (isset ($_GET['password'])) { if (ereg ("^[a-zA-Z0-9]+$&q ...

  2. Effective Java 第三版——54. 返回空的数组或集合不要返回null

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  3. Java中长度为0的数组与null的区别

    有如下两个变量定义,这两种定义有什么区别呢? 1. int[] zero = new int[0]; 2. int[] nil = null; zero是一个长度为0的数组,我们称之为“空数组”,空数 ...

  4. 将文件内容转化为byte数组返回

    如何将文件内容转化为byte数组并返回呢?对于这个问题,我献上我第一次成功的代码~ package com.succez.task1; import java.io.ByteArrayOutputSt ...

  5. 后端返回null,前端怎么处理?数据容错——不用过分相信外部数据

    场景 我们在开发过程当中,总是会遇到因为数据原因,导致使用数组方法或者获取对象属性的时候报错. xxx is not fuction Cannot read property xxxx of unde ...

  6. 使用json_encode编码中文返回null的解决方案

    在gbk的程序中,直接使用json_encode编码包含中文字符的数组,将会返回null. 解决方法: 1.把程序文件编码改为utf8 2.使用mb_convert_encoding把编码转换为utf ...

  7. 如何区分对象、数组、null

    我们都知道在使用typeof的时候对象.数组.null返回的都是object 那么我们怎么来区分他们呢? 我们知道万物皆对象,那么我们就利用对象的toString来区分 这样是不是就很容易区分了呢! ...

  8. json_decode返回NULL

    最近在调用某公司的API时,将对方返回的数据,使用PHP的json_decode函数解析,但是返回NULL,最终排查为对方传送来的json格式有误 打印$_REQUEST,数据结构大致如下: arra ...

  9. $.parseJson 在 firefox 下返回 null 的问题

    最近调查一个浏览器兼容性问题,在 IE, chrome下都运行正常,但是在 firefox 下运行时: $.parseJson(xxx) 返回 null,所以导致了 无法正常运行,调查的结果是因为 返 ...

随机推荐

  1. HtmlHelper扩展实例

    namespace System.Web.Mvc{    public static  class MyHttpHelperExt    { public static string MyLabel( ...

  2. JavaScript 垃圾回收总结

    JavaScript 是一门具有自动垃圾收集机制的编程语言,开发人员不必关心内存分配和回收的问题. 以下是对JavaScript的垃圾收集历程总结: 离开作用域的值将被自动标记为可以回收,因此将在垃圾 ...

  3. Codeforces Round #510 Div. 2 Virtual Participate记

    这场打的顺手到不敢相信.如果不是vp的话估计肯定打不到这个成绩. A:最大显然,最小的话每次暴力给最小的+1. #include<iostream> #include<cstdio& ...

  4. Linq的模糊查询(包含精确模糊查询)

    目录: 1.判断是否为空或者null 2.普通包含模糊查询 1)以某字符串开头的模糊查询 2)以某字符串结尾的模糊查询 3)包含某字符串的模糊查询 3.精确到字符串对应位数字符的模糊查询(*重点) l ...

  5. C++STL简介

    本文仅仅是个人学习的过程中结合网上博文,对STL的整理,也仅仅是简介.仅为个人学习笔记. 一.STL简介(摘自:晨光(Morning)) STL(Standard Template Library), ...

  6. The driver has not received any packets from the server

    解决方法: jdbc的url添加参数: jdbc.url=jdbc:mysql://localhost:3306/totosea?useUnicode=true&characterEncodi ...

  7. bzoj4321: queue2(DP)

    woc万能的OEIS大法!这题居然是有递推式的QAQ http://oeis.org/A002464 这题的状态想不出来T^T... f[i][j][0/1]表示前i个编号,有j对相邻的编号位置上相邻 ...

  8. [LOJ 6159] 最长树链

    看到要求gcd不为1所以肯定在这条答案链上都是一个质数的倍数,所以就会产生一个很暴力的想法 没错,正解就是这样的暴力 只让走是i(素数)倍数的点,作最长链 最长链可以树形dp或两遍bfs,一遍找端点, ...

  9. 推荐一款JQuery星形评级插件

    jRating 是一个非常灵活的jQuery插件用于快速创建一个Ajax星型投票系统.可以设置星型数量和小数支持.功能很强大,具体大家可以看一下这个插件的js代码就知道了,下面这里演示一下这个插件有哪 ...

  10. Vue.js中的常用的指令缩写

    Vue.js为两个最为常用的指令提供了特别的缩写: v-bind缩写 <!--完整语法--> <a v-bind:href="url">测试</a&g ...