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

[NISACTF 2022]sign-ezc++

IDA打开

int __cdecl main(int argc, const char **argv, const char **envp)
{Human *v3; // rbxHuman *v4; // rbxchar v6[23]; // [rsp+20h] [rbp-20h] BYREFchar v7; // [rsp+37h] [rbp-9h] BYREFHuman *v8; // [rsp+38h] [rbp-8h]_main(argc, argv, envp);std::allocator<char>::allocator(&v7);std::string::string(v6, "NISACTF", &v7);v3 = (Human *)operator new(0x18ui64);Man::Man(v3, v6, 4i64);v8 = v3;std::string::~string((std::string *)v6);std::allocator<char>::~allocator(&v7);(*(void (__fastcall **)(Human *))(*(_QWORD *)v8 + 8i64))(v8);v4 = v8;if ( v8 ){Human::~Human(v8);operator delete(v4);}return 0;
}

这个代码一看很懵逼

我们也找不到成功标志

但是看下面由个if(v8)

if很关键(想想你们以前做的)

直接根据if的操作

来到human

void __fastcall Human::~Human(Human *this)
{*(_QWORD *)this = off_4863D0;std::string::~string((Human *)((char *)this + 16));
}

继续跟进

哎!

真的有个flag

看看这个flag

 有三个调用,都看看

结果都是在一个地方

三个flag调用

size_t __fastcall Human::give_flag(Human *this)
{size_t result; // raxint i; // [rsp+2Ch] [rbp-54h]for ( i = 0; ; ++i ){result = strlen(flag);if ( i >= result )break;flag[i] ^= 0xAu;}return result;
}

直接根据这个写代码

a='DYYI^Lq~bcyUcyUDCYKUxoUycmdw'
flag=''
for i in a:flag+=chr(ord(i)^0xA)
print(flag)

得到

NSSCTF{this_is_NISA_re_sign}

相关文章:

  • 解析dapp:铸造虚拟钱包新概念
  • SpringBoot自定义全局异常处理器
  • 基础算法--搜索与图论(2)
  • 盘古信息IMS OS 数垒制造操作系统+ 产品及生态部正式营运
  • 黑马程序员-瑞吉外卖-day5
  • SpringBoot中从HikariCP迁移到Oracle UCP指南
  • STM32 PWM驱动设计
  • OJ_阶乘的和
  • 【重点问题】攻击面发现及管理
  • SpringBoot 整合RabbitMQ 之延迟队列实验
  • Jenkins上跑自动化项目,case出现错误时,导致项目运行时间过长,该如何处理?
  • diffusion 和 gan 的优缺点对比
  • Python系列(9)—— 比较运算符
  • 知识笔记(九十七)———什么是实体符???
  • 【算法专题】动态规划之回文子串问题
  • __proto__ 和 prototype的关系
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript 基本功--面试宝典
  • 创建一种深思熟虑的文化
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 规范化安全开发 KOA 手脚架
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 少走弯路,给Java 1~5 年程序员的建议
  • 交换综合实验一
  • ​​​​​​​​​​​​​​Γ函数
  • #{}和${}的区别是什么 -- java面试
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (06)金属布线——为半导体注入生命的连接
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (八十八)VFL语言初步 - 实现布局
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • *2 echo、printf、mkdir命令的应用
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET DataGridView数据绑定说明
  • .NET Standard 的管理策略
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET6 命令行启动及发布单个Exe文件
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • ?php echo ?,?php echo Hello world!;?
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @RestControllerAdvice异常统一处理类失效原因
  • @TableLogic注解说明,以及对增删改查的影响
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [Codeforces1137D]Cooperative Game
  • [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]