Buuctf-Web-[ACTF2020 新生赛]Include 题解&思路总结

​启动靶机
在这里插入图片描述

题要

  1. 文件包含漏洞
  2. PHP伪协议

做题过程

点击“tips”
在这里插入图片描述

第一步——查看url地址和页面源代码

知识点:文件包含漏洞

根据 ?file=flag.php 我们可以推出,这里出现了文件包含漏洞。
分析如下:此处在url地址对远程的PHP文件进行包含,这意味着攻击者可以传入任意的代码。

F12查看页面源代码,没有发现flag。
但此处文件名为flag.php,猜测flag大概率就在flag.php文件源代码中。
我们可以通过PHP伪协议来查看flag.php的源代码。

PHP文件的后缀是“.php”(PHP文件能够包含文本、HTML、CSS以及PHP代码)

第二步——构造payload

知识点:PHP伪协议

php://filter可以获取指定文件源码。所以我们使用php://filter来构造payload:
格式:php://filter/convert.base64-encode/resource=文件路径

构造payload:
?file=php://filter/convert.base64-encode/resource=flag.php

这句话的意思是我们用base64编码的方式来读取文件flag.php源代码

那么什么要进行 base64 编码呢?
因为当php://filter流与文件包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行base64编码,阻止其执行,从而读取文件源代码。
如果不进行 base64 编码传入,flag.php 就会直接执行,我们就看不到文件中的内容了。

在这里插入图片描述
这时页面会显示出源文件flag.php经过base64编码后的内容。

Base64是一种常用的编码方式,用于将二进制数据转换为可打印的ASCII字符。

第三步——将获得的字符进行Base64解码

在这里插入图片描述

成功获得flag
flag{78f54384-213f-46f9-aba5-63fb4d3b4ab7}

思路总结

题目类型:

  1. 文件包含漏洞

做题步骤:

  1. 通过分析url地址发现存在文件包含漏洞
  2. 利用php://filter构造payload(进行base64编码),获取文件源代码编码后的内容
  3. 进行base64解码获取文件源代码

猜你喜欢

转载自blog.csdn.net/m0_62239233/article/details/133808156