xctf攻防世界 REVERSE 高手进阶区 re2-cpp-is-awesome

article/2025/6/17 14:04:48

0x01. 进入环境,下载附件

题目给出的是一个无后缀文件,我们将其下载。先看看是否有套壳,发现没有套壳。那么接下来就老套路了

0x02. 问题分析

我们使用IDA Pro打开文件,找到main函数,反编译文件,得到代码如下:

__int64 __fastcall main(int a1, char **a2, char **a3)
{char *v3; // rbx__int64 v4; // rax__int64 v5; // rdx__int64 v6; // rax__int64 v7; // rdx__int64 v8; // rdx__int64 v9; // rdx__int64 i; // [rsp+10h] [rbp-60h]char v12; // [rsp+20h] [rbp-50h]char v13; // [rsp+4Fh] [rbp-21h]__int64 v14; // [rsp+50h] [rbp-20h]int v15; // [rsp+5Ch] [rbp-14h]if ( a1 != 2 ){v3 = *a2;v4 = std::operator<<<std::char_traits<char>>(&std::cout, "Usage: ", a3);v6 = std::operator<<<std::char_traits<char>>(v4, v3, v5);std::operator<<<std::char_traits<char>>(v6, " flag\n", v7);exit(0);}std::allocator<char>::allocator(&v13, a2, a3);std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(&v12, a2[1], &v13);std::allocator<char>::~allocator(&v13);v15 = 0;for ( i = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::begin(&v12); ; sub_400D7A(&i) ){v14 = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::end(&v12);if ( !(unsigned __int8)sub_400D3D(&i, &v14) )break;v9 = *(unsigned __int8 *)sub_400D9A((__int64)&i);if ( (_BYTE)v9 != off_6020A0[dword_6020C0[v15]] )sub_400B56((__int64)&i, (__int64)&v14, v9);++v15;}sub_400B73((__int64)&i, (__int64)&v14, v8);std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::~basic_string(&v12);return 0LL;
}

阅读完代码,这不就是c++代码么,最核心的内容则是for循环中的内容,我们可以看到,off_6020A0[dword_6020C0[v15]]才是比较爱逻辑中的核心。
我们双击查看off_6020A0变量,发现是一串字符串,如图:
在这里插入图片描述
我们再双击查看dword_6020C0变量,一堆地址信息,使用hex视图去查看,如图:
在这里插入图片描述
ok,也就是每次使用上述地址去拿到off_6020A0字符里面的信息,开始编写脚本:

S = 'L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t'N = [0x24, 0x0, 0x5, 0x36, 0x65, 0x7, 0x27, 0x26, 0x2d, 0x1, 0x3, 0x0, 0x0d, 0x56, 0x1, 0x3, 0x65, 0x3, 0x2d, 0x16, 0x2,0x15, 0x3, 0x65, 0x0, 0x29, 0x44, 0x44, 0x1, 0x44, 0x2b]
flag = ''for i in N:flag += S[i]print(flag)

得到最终的结果:ALEXCTF{W3_L0v3_C_W1th_CL45535}


http://chatgpt.dhexx.cn/article/l2kWt4gB.shtml

相关文章

【比赛writeup】2023省赛-Reverse-Re2

2023省赛-Reverse-Re2 一、概要 1、标题&#xff1a;Re2 2、关键字&#xff1a;换表BASE64 3、比赛&#xff1a;2023省赛 4、工具&#xff1a;IDAx64、python 二、开始 1、题目分析 逆向的题目&#xff0c;找到关键字符串&#xff0c;找到关键函数&#xff0c;分析函数逻辑…

RE2:Simple and Effective Text Matching with Richer Alignment Features

原文链接&#xff1a;https://aclanthology.org/P19-1465.pdf 2019 ACL 介绍 问题 作者认为之前文本匹配模型中序列对齐部分&#xff0c;过于复杂。只有单个inter-sequence alignment层的模型&#xff0c;常会引入外部信息&#xff08;例如语法特征&#xff09;作为额外输入&am…

【NLP】文本匹配——Simple and Effective Text Matching with Richer Alignment Features阅读与总结(RE2)

背景 前文已经介绍了【NLP】文本匹配——Enhanced LSTM for Natural Language Inference&#xff0c;其实2017年发表的&#xff0c;文中使用了两个LSTM进行特征提取&#xff0c;总的来说参数多&#xff0c;速度慢&#xff0c;还不能并行处理。今天我们再来看看阿里巴巴和南京大…

Re2:读论文 CS-GNN Measuring and Improving the Use of Graph Information in Graph Neural Networks

诸神缄默不语-个人CSDN博文目录 论文下载地址&#xff1a;https://openreview.net/attachment?idrkeIIkHKvS&nameoriginal_pdf 代码&#xff1a;yifan-h/CS-GNN: Measuring and Improving the Use of Graph Information in Graph Neural Networks 论文引用方式&#xf…

ctfshow re2

打开附件如下 勒索病毒我去上网查了一下&#xff0c;发现是通过加密数据&#xff0c;所以这个题可能和加密有关&#xff0c;除了勒索病毒还有一个enflag.txt打开如下 先不管这个 第一步查壳这个exe程序 无壳。 第二步用ida32位打开这个 shiftf12查看字符 有个充值成功&#xf…

CTFShow re2 (RC4

参考&#xff1a;CTFSHOW re2 本文&#xff1a;跟着大佬的博客一步一步做CTFShow re2的记录 IDA分析 有个比较函数 re一下 s "DH~mqqvqxB^||zllJq~jkwpmvez{" s1 for i in s:s1 chr(ord(i) ^ 0x1f) print(s1)得到 再四处看看 跟进sub_401028 四个sub点进去看看…

2023年天津市逆向re2.exe解析-比较难(超详细)

2023年天津市逆向re2.exe解析(较难) 1.拖进IDA里进行分析2.动态调试3.编写EXP脚本获取FLAG4.获得FLAG1.拖进IDA里进行分析 进入主程序查看伪代码 发现一个循环,根据行为初步判定为遍历输入的字符并对其ascii^7进行加密 初步判断sub_1400ab4ec为比较输入和flag的函数 跟进u…

RE2..

RE2 Simple and Effective Text Matching with Richer Alignment Features Simple and Effective Text Matching with Richer Alignment Features 论文提出了一种快速且高效的文本匹配模型&#xff0c;建议保留三个可用于序列间对齐的关键特征&#xff1a;原始点对齐特征、先前…

RE2正则表达式引擎资料

2019独角兽企业重金招聘Python工程师标准>>> 官网RE2&#xff0c;C正则表达式库实战《自动机理论 语言和计算导论》 转载于:https://my.oschina.net/letiantian/blog/280743

Go与Re2正则

Golang支持Re2正则标准&#xff08;实际上并不支持全部&#xff0c;只是Re2语法的子集&#xff09;&#xff0c;本文介绍一些Golang正则支持语法的解释。 1、Regex Flags 1、贪婪和非贪婪&#xff1a; 正则匹配的时候一个个字符向后找。贪婪就是即使已经匹配了还会尝试向后找…

【文本匹配】之 RE2论文详解

RE2 - Simple and Effective Text Matching with Richer Alignment Features 这篇论文来自阿里&#xff0c;19年的ACL论文。《Simple and Effective Text Matching with Richer Alignment Features》&#xff1a;https://arxiv.org/abs/1908.00300 Intro 很多深层网络只拥有…

文本匹配、文本相似度模型之RE2

简单有效的文本匹配&#xff0c;具有更丰富的对齐功能 github: https://github.com/daiyizheng/shortTextMatch/blob/master/src/DL_model/classic_models/models/RE2.py 本文作者提出了一种快速、强神经网络的通用文本匹配方法。保持序列间对齐可用的三个关键特征:原始点方向…

RE2,C++正则表达式库实战

RE2简介 RE2是,一个高效、原则性的正则表达式库&#xff0c;由Rob Pike和Russ Cox两位来自google的大牛用C实现。他俩同时也是Go语言的主导者。Go语言中的regexp正则表达式包&#xff0c;也是RE2的Go实现。 RE2是&#xff0c;一个快速、安全&#xff0c;线程友好&#xff0c;PC…

DB9接口定义

注意上表是公头的引脚定义&#xff0c;公头与母头的引脚编号是轴对称的&#xff0c;因此将公头和母头连接时是相同序号的引脚相连接。 作为串口使用时要注意&#xff0c;公头的2号是RXD&#xff0c;因而母头的2号是TXD&#xff0c;公头的3号是TXD&#xff0c;因而母头的3号是RX…

LIN DB9定义

没找到合适的图片所以用上图代替&#xff0c;在LIN中&#xff0c;图中CAN_H&#xff08;7&#xff09;为LIN线&#xff0c; GND&#xff08;3&#xff09;接地. 实物图如下

DB9串口接口定义

公头 母头 定义不同 连线都是2 3 5 但是 公头 2是RXD 3是Txd 母头 2是TXD 3是RXD而且两者的排列顺序,画pcb时注意 以上是公头接线方法~ 母头原理图接线 交叉 但是上图的db9的原理图是母的画法啊&#xff0c;应该是直接从ad的库中调去的&#xff0c;ad的库中只有着一种画法 例子…

DB9定义图

DB9接口定义图