PHP WEB练习题

本文介绍如何使用Hackbar插件配合BurpSuite工具,针对PHP中的正则表达式漏洞进行攻击。通过特定的参数设置和%00截断技巧,绕过代码中的ereg函数过滤,成功获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用hackbar简单设置参数

第一题非常简单,看代码其实就是submit设置参数了就可以看到flag了。

<?php  
if (isset($_POST["submit"]))  
{
    include("flag2.php");
    echo "Congratulations! FLAG is : ".$flag;
}
show_source(__FILE__);
?>

但是页面上也没有提交,而且使用了post方法,所以要用一个很好用的插件:hackbar。是火狐浏览器的附加插件。
(https://img-blog.csdnimg.cn/20191107210340566.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1R0dHR0dHRpbWVy,size_16,color_FFFFFF,t_70)
在这里可以搜索new hackbar
在这里插入图片描述
然后只要随便给submit设置一个值,run一下。
在这里插入图片描述

%00内容截断

<?php  
if (isset($_POST["submit"]))  
{
  if (isset($_POST['Luc1fer']))
  {
    if (ereg("^[a-zA-Z0-9]+$", $_POST['Luc1fer']) === FALSE)
    {
      exit('<script>alert("have fun:)")</script>');
    }
    elseif (strlen($_POST['Luc1fer']) < 11 && $_POST['Luc1fer'] > 999999999)
    {
      if (strpos($_POST['Luc1fer'], '#CCUT#') !== FALSE)
      {
        if (!is_array($_POST['Luc1fer'])) {
        include("flag.php");
        echo "Congratulations! FLAG is : ".$flag;
        }
        else
      {
        exit('<script>alert("nonono")</script>');
      }
      }
      else
      {
        exit('<script>alert("nonono")</script>');
      }
    }
    else
    {
      exit('<script>alert("sorry")</script>');
    }
  }
}
show_source(__FILE__);
?>

看一下代码要求:

  • submit需要设置一个值。
  • 变量Luc1fer的内容只能从[a-zA-Z0-9]里面选择,也就是没有符号内容。
  • 对于它的长度,需要在11位以内,同时它的值需要大于9个9。
  • Luc1fer变量里面必须包含#CCUT#。
  • Luc1fer变量不能是数组。
    可以看到其中有两个要求似乎有点儿矛盾,不能有符号内容又必须包含#。
    这里有一个ereg函数来对比变量的内容,ereg函数存在NULL截断漏洞,导致了正则过滤被绕过,所以可以使用%00截断正则匹配。
    于是我们按照要求构建变量内容,首先一定包含#CCUT#这是六位,然后要用%00截断它,所以是%00#CCUT#,当然在传输时%00会变成空白,所以还剩下五位内容使得值大于9位9,于是我们使用科学计数法,科学计数法中E/e后的数表示10的多少次方,1e9即是数10的9次方,所以答案就是1e9%00#CCUT#。

当然这里还有一个问题就是post方法是不能传送%00, %00 截断在 GET 中被 url 解码之后是空字符。但是在 POST 中 %00 不会被 url 解码,所以只能通过 burpsuite 修改。

burpsuite

在这里插入图片描述
首先要设置这里的intercept on,然后设置浏览器代理为127.0.0.1端口为8080。
重新打开题目的网址会有点卡,然后回到这个burpsuite会看到界面里已经有了一些内容。点forward让它通过,这时网页会显示出原来的内容。
然后使用hackbar传参发送。
在这里插入图片描述
然后forward直到这个地址出现了params信息。
在这里插入图片描述
然后将变量修改为我们构造出的内容,重新forward发送,回到浏览器页面就得到了flag。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值