0x01 阅读须知
鸡哥安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
0x02 函数/特性说明
1.ereg()函数
本函数以 pattern 的规则来解析比对字符串 string。比对结果返回的值放在数组参数 regs 之中,regs[0] 内容就是原字符串 string、regs[1] 为第一个合乎规则的字符串、regs[2] 就是第二个合乎规则的字符串,余类推。若省略参数 regs,则只是单纯地比对,找到则返回值为 true。
2.strpos函数
返回 needle 在 haystack 中首次出现的数字位置。
0x03 数组为NULL绕过strpos与ereg正则解析
1.当我们传入payload:?nctf[]=,路由过程如下
代码第1-8行:$GET传nctf参数,使用ereg匹配数字,如果为FALSE,返回必须输入数字才行。再使用strpos匹配$biubiubiu,如果为不为FALSE,返回flag,否则返回骚年,继续努力!。当我们传入一个数组时,ereg匹配为NULL,strpos匹配NULL,均不为FALSE,故而pass了验证,返回了flag。DEBUG:$_GET: {nctf =>}
if (isset ($_GET['nctf'])) {
if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
echo '必须输入数字才行';
else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)
die('Flag: '.$flag);
else
echo '骚年,继续努力吧啊~';
}
原文始发于微信公众号(鲲哥的Bypass之旅):奇淫巧计 数组为NULL绕过strpos与ereg正则
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论