当前位置:   article > 正文

Writeup-moectf-ezphp_moectf2023

moectf2023
  • 西电新生赛Moectf里面web方向的ezphp

  • 有点小提示(火力覆盖--覆盖)--考虑 web变量覆盖
  • 打开页面 看到源码

  • 四行语句,执行完毕才可出flag
  • 发送GET或者POST请求,要求请求名(key)为flag否则返回$giveme
  • 第二行要求值不等于flag否则返回$getout
  • 三四行对超级全局变量POST GET进行遍历赋值,我们发现输出的flag被自己提交的POST/GET请求覆盖,导致输出的是自己输出的值,无法得到flag
  • ps:键和值的概念参考其他文章((4条消息) php extract 变量覆盖,变量 覆盖漏洞----$$_Duke Yu的博客-CSDN博客

  • 首先想到更改一下getout值,让其在第二个函数报错带出flag
  • 用bp抓个包
  • 发现$flag不会执行,当成字符串运行

  • 刚才变量代替方法行不通,考虑下后两行函数
  • 要想让$flag不被替换,要么考虑等号后是否可以注释,要么考虑等号前--更改的不是$flag
  • 注释显然行不通,想办法既要通过前两行要求,也要更改到$flag名
  • 想到_GET超级全局变量;
  • 由于先判断POST 再判断GET
  • 用POST更改GET,使第二个语句不生效
  • 构造payload:
  • GET: ?flag=1
  • POST: _GET=fal(不是flag就可以)
  • 相当于发送的post和get可以绕过第一条命令:post get至少一个key(等号前的)为flag
  • 和第二条命令:二者值不能为flag
  • 并且通过前两个语句后,post语句将
    key=
    value变成$_GET=$fal(post的值)而后使得第四个语句不对$flag造成覆盖
  • 进而绕过过滤爆出最后flag
  • 参考文章(4条消息) php extract 变量覆盖,变量 覆盖漏洞----$$_Duke Yu的博客-CSDN博客
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/501714
推荐阅读
相关标签
  

闽ICP备14008679号