【Ctfer训练计划】——(十)

news2024/11/19 8:47:40
作者名:Demo不是emo
主页面链接: 主页传送门
创作初心: 舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭: 不要让时代的悲哀成为你的悲哀
专研方向: web安全,后渗透技术
每日emo: 永远年轻,永远热泪盈眶

一、data伪协议配合include

题目 :web37
训练平台 :ctfshow
题目描述命令执行,需要严格的过滤

容器环境打开后页面如下

也是一道代码分析题,GET方式传入的c变量绕过过滤后,作为include()函数的参数并执行,要求读取flag.php文件并拿到flag

看过我的ctf命令执行解题技巧这篇博客的小伙伴应该知道include也可以拿来做命令执行,需要配合data伪协议一起使用,如下

http://url/?c=data://text/plain,<?php system('cat fla*.php');?>

data伪协议在特定条件(版本,配置)下,可以用来执行我们的恶意语句,这样就读取到了flag文件

但是用data伪协议配合命令来读取到的文件会在 PHP 脚本生成的 HTML 页面中显示。而该靶场当前页面是index,php,所以读取的文件就只能显示在源代码中了

执行上面的命令后ctrl+u查看源代码(f12查看元素也可以)即可看到执行结果,如下

成功拿到flag

二、编码绕过php限制

题目 :web38
训练平台 :ctfshow
题目描述命令执行,需要严格的过滤

容器开启后页面如下

仔细观察了一下,也就比上一道题多了一个php的限制,其实include配合data导致的命令执行是不怎么需要担心这种直接黑名单字符限制的,因为data伪协议支持多种编码方式,所以这道题我们使用base64编码即可绕过,语句如下

data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

base64,后面那段就是经过base64编码后的“<?php system('cat flag.php');?>”语句,这样就不存在被各种各样的关键字符限制

成功读取flag.php文件

三、PHP后缀过滤

题目 :web39
训练平台 :ctfshow
题目描述命令执行,需要严格的过滤

容器打开后页面如下

可以看到这道题和上面那个题最大的区别就是我们传入的c变量的末尾会先拼接上.php再作为include的参数执行

其实只要知道include函数对于参数的处理,这道题就不难操作,其实这道题的payload用上面两道题任意一个都可以,如下

http://url/?c=data://text/plain,<?php system('cat fla*.php');?>

因为我们的payload的末尾带有;?>,就已经形成了闭合,就算后面带上一个.php也没有意义,会被当成html页面直接显示在页面上,起不到什么作用,如下

这里用编码那个也可以,这只是懒得写了,你们懂就可以

四、超限制过滤绕过

题目 :web40
训练平台 :ctfshow
题目描述命令执行,需要严格的过滤

容器打开后页面如下

看了一下代码的逻辑,传入c变量,经过一堆绕过后就可以作为eval()的函数执行,但是过滤还挺多的,这里介绍三种方法

第一种解法

第一种就是我们 命令执行解题方法汇总中讲到的highlight_file函数高级用法,但是注意,这里把点号也过滤了,所以需要用 pos(localeconv())代替,所以最后的payload如下
url/?c=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

这样就能直接读取到flag.php文件了,注意:这里的highlight_file()函数可以换成show_source(),两个没啥区别,都行

第二种解法

get传入c变量,最后的url如下

http://xxxxx/?c=eval(array_pop(next(get_defined_vars())));

意思就是将post传入的第一个参数作为eval函数的参数执行,此时再用post传入我们的参数,如下

cmd=system("tac flag.php");

效果如下

第三种解法

利用session_id()让php读取我们设置的cookie(session默认不使用所以加了session_start()让php开始使用session)

session_id()用于取得或者重新配置目前存放Session的代号,其语法是“string session_id(string [id]);”。
session_start()会创建新会话或者重用现有会话

方法如下

?c=session_start();system(session_id());

提交之后 Cookie中会生成PHPSESSID,这时候我们可以把它的值改成恶意命令再提交,然后就会显示当前目录下的文件,也可以用bp来抓包,如下

此时就会执行我们插入phpsessid下的恶意参数,效果如下

同样的也可以执行我们的cat flag,还支持base64编码,写入小马等,但是这种方式的深入操作只适用于php版本5.5 -7.1.9均可以执行,这个题目的版本并不符合,所以无法进一步操作,我也没有通过这种方式拿到flag文件,所以有点遗憾

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

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

相关文章

智公网:这几类人员报考公务员无法被录取

对于很多人来讲&#xff0c;毕业之后都想找一份稳定的工作&#xff0c;目前最受欢迎的就是公务员和教师编了&#xff0c;我们今天来说下公务员这个铁饭碗。 公务员考试可是很不容易的&#xff0c;有两场考试&#xff0c;第一场是笔试&#xff0c;第二场是面试。笔试通过之后才…

2021-06-10 Multisim的74LS192功能表及555时基74LS190

缘由https://ask.csdn.net/questions/7445811?spm1005.2025.3001.5141以及60s倒计时电路连接后没有显示 - 24小时必答区 74LS192芯片是一个具有双计数功能的芯片&#xff0c;既可以做加计数&#xff0c;也可以做减计数。 1、A、B、C、D 置数输入端&#xff0c;管脚悬空相当…

Web端接入视频设备(NVR/IPC)

概述 本文主要介绍视频监控设备&#xff0c;视频监控设备接入&#xff0c;常用的开源流媒体及接入过程中的一些问题。 第一章 视频监控设备 目前常见的视频监控设备主要有NVR和IPC&#xff0c;以海康为例。 1.1 视频监控设备介绍 IPC即IP Camera&#xff0c;可以接入网络的…

06-GC垃圾收集器有那些?

如图展示了HotSpot虚拟机中7种不同的垃圾收集, 连线代表两者可搭配使用 1.Serial 垃圾收集器&#xff08;单线程、复制算法&#xff09; Serial&#xff08;英文连续&#xff09;是最基本垃圾收集器&#xff0c;使用复制算法&#xff0c;曾经是JDK1.3.1 之前新生代唯一的垃圾…

【基础】Flink -- DataStream API

Flink -- DataStream API执行环境 Execution Environment创建执行环境设置执行模式触发程序执行源算子 Source从集合中读取数据从文件读取数据从 Socket 读取数据自定义数据源转换算子 Transformation基本转换算子映射 map过滤 filter扁平映射 flatMap聚合算子 Aggregation按键…

WPS配置mathtype

笔者电脑软件版本&#xff1a;WPS Office mathtype_7.4.8.0 请注意WPS适配的mathtype版本。 下载地址 mathtype_7.4.8.0&#xff1a;https://wwl.lanzoum.com/iuJDz0guffuh wps.vba.exe&#xff1a;https://handong1201.lanzouw.com/iX5GZtn70pe&#xff08;mathtype右侧选…

查找算法之线性查找

目录 线性查找 算法实现 算法实现 python C 复杂度分析 优点与缺点 线性查找 线性查找&#xff08;Linear Search&#xff09;是一种最基础的查找方法&#xff0c;其从数据结构的一端开始&#xff0c;依次访问每个元素&#xff0c;直到另一端后停止。 算法实现 线性查…

【凸优化】Gradient Descent and Newton Descent【梯度下降法和牛顿下降法】(含Python代码绘制等高线图)

文章目录Gradient Descent and Newton Descent一、下降法【Descent】二、梯度下降法【Gradient Descent】三、牛顿下降法【Newton Descent】四、示例Example五、ReferenceGradient Descent and Newton Descent 一、下降法【Descent】 首先介绍什么是下降法【Descent Methods】…

【Git】下载安装学习记录

【下载安装】 1.官网下载64位的安装包 2.双击安装&#xff0c;设置安装路径&#xff0c;一路next即可 使用学习指南&#xff1a;一、设置用户签名二、操作本地库的命令git initgit statusgit add 文件名git rm --cached 文件名git commit -m "注释" 文件名git refl…

在PyCharm中配置Anaconda环境

目录 1.创建项目 2.设置解释器 ​​​​​​ 3.常见问题 1.创建项目 2.设置解释器 3.常见问题 1.%matplotlib inline报错&#xff1a;Python关于%matplotlib inline 2.from d2l import torch as d2l报错&#xff1a; 报错原因&#xff0c;没有导入d2l这个包 如何导入呢&…

JDK8下载安装与配置环境变量(linux)

一、前言 基于Linux平台的MySQL安装文件有三个版本&#xff0c;分别是RPM软件、GenericBinaries软件包、源码包&#xff0c;具体介绍如下&#xff1a; ①RPM软件包是一种Linux平台下的安装文件&#xff0c;通过相关命令可以很方便地安装与卸载。该软件包分为两个&#xff1a;…

SVF Saber的实现

SVF Saber1.基本原理2.API类型定义3.Memory Leak Checker3.1.示例3.2.初始化3.3.程序切片3.4.路径约束求解3.5.报告错误4.总结5.参考文献Saber是一个静态漏洞检测器&#xff0c;最初集成到open64中&#xff0c;现已集成到SVF中&#xff0c;主要检测内存泄漏&#xff0c;DoubleF…

GAN的损失函数

1.GAN 在训练过程中&#xff0c;生成器和判别器的目标是相矛盾的&#xff0c;并且这种矛盾可以体现在判别器的判断准确性上。生成器的目标是生成尽量真实的数据&#xff0c;最好能够以假乱真、让判别器判断不出来&#xff0c;因此生成器的学习目标是让判别器上的判断准确性越来…

PCL点云处理之快速点特征直方图(FPFH)描述符(八十六)

PCL点云处理之快速点特征直方图(FPFH)描述符(八十六) 前言一、快速点特征直方图理论二、FPFH和PFH的区别二、实验过程1.代码2输入法线的NAN值检查用 OpenMP 加速 FPFH前言 对于具有 n 个点的给定点云 P,点特征直方图(见点特征直方图(PFH)描述符)的理论计算复杂度为 O (nk…

VueRouter路由的使用(上)

文章目录VueRouter路由的使用p21路由的原理_hash改变historyP22 认识vue-router路由的基本使用流程默认路径router-link路由懒加载路由的其他属性动态路由的基本匹配NotFound路由嵌套编程式导航VueRouter路由的使用 p21 路由的原理_hash改变 <!DOCTYPE html> <html …

JavaScript 运算符

文章目录JavaScript 运算符JavaScript 算术运算符JavaScript 赋值运算符用于字符串的 运算符对字符串和数字进行加法运算JavaScript 运算符 运算符 用于赋值。 运算符 用于加值。 运算符 用于给 JavaScript 变量赋值。 算术运算符 用于把值加起来。 实例 指定变量值&am…

Java基础学习笔记(十)—— 异常

异常1 异常概述2 异常处理方式2.1 JVM默认处理异常的方式2.2 throws方式处理异常2.3 throw抛出异常2.4 try-catch方式处理异常2.5 Throwable成员方法2.6 异常的练习3 自定义异常1 异常概述 异常&#xff1a;就是程序出现了不正常的情况。程序在执行的过程中&#xff0c;出现的…

Vivado综合设置之-gated_clock_conversion

本文验证-gated_clock_conversion设置为on或off时&#xff0c;给Schematic带来的差异。 -gated_clock_conversion设置为on时&#xff0c;用于移除门控时钟&#xff0c;门控时钟是由门电路而非专用时钟模块&#xff08;例如MMCM或PLL&#xff09;生成的时钟。 门控时钟会对设计…

Java-集合(3)

Vector集合类 1.Vector底层保存数据的也是一个对象数组&#xff1a;protected Object[] elementDate; 2.Vector是线程同步的&#xff0c;也就是线程安全Vactor的操作方法都带有synchronized修饰。以此可以进行安全线程保障&#xff0c;所以在开发中如果确认只有一个线程操作集…

dubbo学习笔记3(小d课堂)

dubbo高级特性 启动依赖检查 我们现在直接来启动我们的消费者&#xff1a; 它会报错。 我们 再去直接运行我们的消费者就不会报错。 我们也可以不在代码中去配置&#xff1a; 实际工作中比较建议使用这种方式。 dubbo.reference.check是配置所有的reference里的service都是f…