bugku 数组返回NULL绕过

本文探讨了在Bugku平台中遇到的数组返回NULL绕过问题,重点分析了isset()、ereg()和strpos()等函数的特性。通过理解这些函数在处理变量和正则匹配时的行为,揭示了当参数不符合函数预期时如何利用NULL值进行绕过的方法,例如使用`?password=a%00--`和`?password[]=0`进行尝试。
摘要由CSDN通过智能技术生成
<?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';
}
?>

1.  isset()函数 — 检测变量是否已设置并且非 NULL

2. ereg()函数 — 正则表达式匹配

3.    strpos() 函数对大小写敏感。

“[A-Za-z0-9]"
方括号表示字符集,[A-Za-z0-9]匹配大小写字母和数字其中一个字符

"^[A-Za-z0-9]$"
^表示字符串开始,$表示字符串结束 ,这个匹配只有一个大小写字母和数字字符的字符串

“^[A-Za-z0-9]+$"
+号表示重复1到多次,匹配由多个数字大小字母组成的字符串

阅读代码,本题需要满足的条件

必须以数字或者字母开头(其实看到ereg就可以想到%00截断);
必须在password参数中找到--。

所以得到

?password=a%00--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值