web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)

题目

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第1张图片

进入页面显示如下,有两个选项

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第2张图片

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第3张图片

这里可以注意到url的变化

这里用到伪协议,用php://filter读取php文件源码内容

payload

http://0990b516-c740-417e-bef6-ccc0e8c688ba.node5.buuoj.cn:81/index.php?category=php://filter/read=convert.base64-encode/resource=index.php

没有正常显示,查看报错信息

可能是被拼接了,删除后面的php就行

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第4张图片

解码得到源码

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第5张图片


  
    
    
    
    
    Had a bad day?
    
    
  
  
    

Cheer up!

Did you have a bad day? Did things not go your way today? Are you feeling down? Pick an option and let the adorable images cheer you up!

进行审计发现


			
  1. 从URL的查询参数中获取名为category的值,赋给变量$file

  2. 判断$file是否存在。如果存在,则继续执行下一步;如果不存在,则不执行任何操作。

  3. 使用strpos()函数对$file进行检索,判断是否包含"woofers"、"meowers"或"index"字符串。如果其中任何一个字符串在$file中存在,则执行下一步;如果不存在这些字符串,则输出一条提示信息。

  4. 如果满足前面的条件,则使用include语句包含$file . '.php'所指定的PHP文件。

这里利用strpos()函数

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第6张图片web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第7张图片

通过源码可知,必须要含有woofers、meowers、index其中一个,直接查找flag是找不到的,这里需要包含其中一个

php://filter伪协议可以套一层协议

payload

http://0990b516-c740-417e-bef6-ccc0e8c688ba.node5.buuoj.cn:81/index.php?category=php://filter/read=convert.base64-encode/woofers/resource=flag

解码可得到flag

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第8张图片

web:[BSidesCF 2020]Had a bad day(伪协议、协议嵌套利用、strpos()函数)_第9张图片

参考链接:

[BSidesCF 2020]Had a bad day-CSDN博客

https://www.cnblogs.com/buchuo/p/13624032.html

你可能感兴趣的:(BUUCTF-WEB,前端,网络安全,web安全)