攻防世界的一道文件包含题目

include(“文件名”);会将文件中的内容视为代码块接入include所在代码中,输出的只是执行后的结果,文件中的注释、定义等无法查看。

本题中可以控制的变量有file1和file2,file2用于满足if判断要使其内容为“hello ctf”。但是需要注意直接file2=hello%20ctf是不行的,因为file_get_contents()的参数也为文件名,直接file2=hello%20ctf时file2为字符串,需要用data://协议使它当做文件。file1用于提取flag.php中的内容并用base64编码以防止执行,然后通过include输出file1中的内容,也就是base64编码后的flag.php中的内容。

data://协议

1.使用条件为

allow_url_fopen:on

allow_url_include :on

2.用法

data://text/plain,
data://text/plain;base64,

3.示例

  1)eg: http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>         #会向file中输入文本数据流<?php%20phpinfo();?>

  2)eg:http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b   #会向file中输入base64解码后的PD9waHAgcGhwaW5mbygpOz8%2b

php://filter协议

1.参数详解

php://filter 参数 描述
resource=<要过滤的数据流> 必须项。它指定了你要筛选过滤的数据流。
read=<读链的过滤器> 可选项。可以设定一个或多个过滤器名称,以管道符(*\*)分隔。
write=<写链的过滤器> 可选项。可以设定一个或多个过滤器名称,以管道符(\)分隔。
<; 两个链的过滤器> 任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。

2.示例

  eg:  http://127.0.0.1/include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php   #resource参数=phpinfo.php表示要过滤的数据流为phpinfo.php源文件,reade参数=convert.base64-encode表示要读取数据流,且使用了base64编码转换器(convert.base64-encode)

综上可知本题payload为   ?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello%20ctf

最新文章

  1. MVC 本地运行可以发布到IIS 报Sorry, an error occurred while processing your request.解决方案
  2. 使用ADO.NET执行SQL脚本
  3. js资源加载优化
  4. Android成长日记-数据存储之SQLite[1]
  5. 如何调试R程序(转载)
  6. TCP/IP协议原理与应用笔记08:对等层和对等实体
  7. 用Visual Studio 2015 编写驱动之前一定要注意的问题!!!
  8. localStorage eval script
  9. freemarker数据类型
  10. CF558E
  11. js中实现截取数组的后几个元素作为一个新数组的方法
  12. jdk和jre区别
  13. leetcode-algorithms-23 Merge k Sorted Lists
  14. C# IEnumerator的使用
  15. WKWebView 里 JS 和 native 通信的例子
  16. [2017BUAA软工]第3次个人作业
  17. mydumper安装
  18. Python常用库之二:Pandas
  19. go——常量
  20. 剑指offer-第五章优化时间和空间效率(从1到n的整数中1出现的次数)

热门文章

  1. 依那西普治疗多关节型和系统型JRA的长期疗效[EULAR2007_SAT0397]
  2. Java第二讲动手动脑
  3. js 操作符 —— 位操作符详解
  4. js获取input处理
  5. mysql-8版本优化建议
  6. vue3中对于/deep/和::v-deep的警告信息处理
  7. Mysql习题系列(二):多表查询(一篇学会做Mysql多表查询题,超详细~)
  8. 【C学习笔记】day3-2 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
  9. Codeforces 919E Congruence Equation(循环节+数论)
  10. git常规操作