奇淫巧计 ereg正则%00截断

admin 2024年12月6日17:28:40评论13 views字数 1026阅读3分25秒阅读模式

 

0x02 函数说明

1.ereg函数

ereg()函数搜索由指定的字符串作为由模式指定的字符串,如果发现模式则返回true,否则返回false。搜索对于字母字符是区分大小写的。

奇淫巧计 ereg正则%00截断

2.strlen函数

成功则返回字符串 string 的长度;如果 string 为空,则返回 0

奇淫巧计 ereg正则%00截断

3.strpos函数

查找字符串首次出现的位置,没找到返回false

奇淫巧计 ereg正则%00截断

0x03 ereg正则%00截断 CTF题解析

1.当我们传入payload:1e7%00*-*,路由过程如下

代码第1-2行:判断是否有password参数传入DEBUG:1.$_GET:{password => "1e7*-*"},这里有参数,所以pass

代码第3-6行:ereg函数正则限制password格式,只能是一个或者多个数字、大小写字母,否则输出You password must be alphanumeric。DEBUG:1.$_GET:{password => "1e7*-*"},由于传入了%00,故截断了后面的*-*,所以pass

代码第7-8行:strlen函数判断是不是长度< 8且大小 >9999999。DEBUG:1.$_GET:{password => "1e7*-*"},由于传入了%00,故截断了后面的*-*,且1e7为10的7次方,长度小于8大小大于99999999,所以pass

代码第9-11行:strpos函数查找*-*的位置。DEBUG:1.$_GET:{password => "1e7*-*"},*-*存在,故而爆出了密码

if (isset ($_GET['password'])) //如果password存在{  if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)//限制password格式,只能是一个或者多个数字、大小写字母  {    echo '<p>You password must be alphanumeric</p>';  }  else if (strlen($_GET['password']) < 8 && $_GET['password'] > 9999999)//判断是不是长度< 8且大小 >9999999   {     if (strpos ($_GET['password'], '*-*') !== FALSE) //strpos — 查找字符串首次出现的位置*-*      {      die('Flag: ' . $flag);//错误并爆出密码
奇淫巧计 ereg正则%00截断

 

原文始发于微信公众号(鲲哥的Bypass之旅):奇淫巧计 ereg正则%00截断

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月6日17:28:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   奇淫巧计 ereg正则%00截断http://cn-sec.com/archives/2496223.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息