NSSCTF [HNCTF 2022 WEEK2]e@sy_flower

news2024/9/29 1:43:30

将文件拖入ida 就看到很显眼的花指令

对着jmp指令nop掉

将main函数按p定义 F5查看伪c代码

思路就是输入的flag先互换位置,再与0x30异或。

int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
{
  signed int v3; // 存储临时值
  int i; // 循环计数器
  char v5; // 临时存储变量
  unsigned int j; // 循环计数器
  int v7; // 存储比较结果
  char v8; // 存储字符
  char v9; // 存储字符
  char Arglist[48]; // 存储输入的 flag

  // 输出提示信息
  sub_401020("please input flag\n", v8);
  
  // 读取用户输入到 Arglist 中
  sub_401050("%s", (char)Arglist);

  v3 = strlen(Arglist);

  // 将 Arglist 中相邻字符位置交换
  for (i = 0; i < v3 / 2; ++i)
  {
    v5 = Arglist[2 * i];
    Arglist[2 * i] = Arglist[2 * i + 1];
    Arglist[2 * i + 1] = v5;
  }

  // 对 Arglist 中的字符进行异或操作
  for (j = 0; j < strlen(Arglist); ++j)
    Arglist[j] ^= 0x30u;

  // 比较处理后的 Arglist 和特定字符串
  v7 = strcmp(Arglist, "c~scvdzKCEoDEZ[^roDICUMC");

  if (v7)
    v7 = v7 < 0 ? -1 : 1;

  // 根据比较结果输出相应信息,并退出程序
  if (!v7)
  {
    sub_401020("yes", v9);
    exit(0);
  }
  else
  {
    sub_401020("error", v9);
    exit(0);
  }
}

写出逆向脚本

enc = list('c~scvdzKCEoDEZ[^roDICUMC')
flag = []

# 恢复原位置
for i in range(int(len(enc) / 2)):
    tmp = enc[2 * i]
    enc[2 * i] = enc[2 * i + 1]
    enc[2 * i + 1] = tmp

# 与0x30逆向异或
for i in range(len(enc)):
    flag.append(chr(ord(enc[i]) ^ 0x30))

# 输出逆向处理后的flag
for i in flag:
    print(i, end='')

得到flag

NSSCTF{Just_junk_Bytess}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2175453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

栏目二:Echart绘制动态折线图+柱状图

栏目二:Echart绘制动态折线图+柱状图 配置了一个ECharts图表,该图表集成了数据区域缩放、双Y轴显示及多种图表类型(折线图、柱状图、象形柱图)。图表通过X轴数据展示,支持平滑折线展示比率数据并自动添加百分比标识,柱状图以渐变色展示评论数量,而象形柱图则以矩形形式展…

基于baidu的云函数实现隐藏c2真实地址

参考 云函数利用&Profile混淆 可能是大家都用的腾讯云搞得现在腾讯云下架那个api网关了。。。所以只能找其他的云函数使用 在网上只找到了一片不是腾讯云的云函数&#xff0c;使用的是百度云函数&#xff0c;那么也尝试的使用一下百度云函数。 百度云&#xff1a;函数计…

C++里的随机数

想用C做最基础的猜数字,肯定少不了随机数; srand(unsigned(time(NULL))); rand() //是生成一个随机数 rand()%1001//就是一个从一到一百的随机数 合体: #include <iostream> #include <cstdlib> #include <time.h> int main() { int g 0; while (g < …

Redis缓存双写一致性笔记(上)

Redis缓存双写一致性是指在将数据同时写入缓存&#xff08;如Redis&#xff09;和数据库&#xff08;如MySQL&#xff09;时&#xff0c;确保两者中的数据保持一致性。在分布式系统中&#xff0c;缓存通常用于提高数据读取的速度和减轻数据库的压力。然而&#xff0c;当数据更新…

NetAssist测试TCP和UDP

由于在Windows下经常使用NetAssist.exe这款网络调试工具进行TCP、UDP的服务端、客户端的监听&#xff0c;对于需要编写各种通信协议的TCP服务端、客户端以及UDP通信程序来说是很方便的。下载地址&#xff1a;http://free.cmsoft.cn/download/cmsoft/assistant/netassist5.0.14.…

Docker容器的使用

前提条件 Linux环境安装好Docker&#xff0c;可参考Rocky Linux9下安装Docker和卸载Docker Docker命令图 帮助命令 帮助命令&#xff0c;查看有哪些命令可以用 [rootlocalhost ~]# docker --help ​ 查看某个命令的帮助&#xff0c;例如&#xff1a;run [rootlocalhost ~]# …

MySQL递归查询笔记

目录 一、创建表结构和插入数据 二、查询所有子节点 三、查询所有父节点 四、查询指定节点的根节点 五、查询所有兄弟节点&#xff08;同级节点&#xff09; 六、获取祖先节点及其所有子节点 七、查询每个节点之间的层级关系 八、查询指定节点之间的层级关系 一、创建表…

一款辅助渗透测试过程,让渗透测试报告一键生成

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

动态顺序表的增删改查(数据结构)

目录 一、顺序表 二、静态顺序表 三、动态顺序表 3.1、动态顺序表的实现 3.2、动态顺序表的实现 3.3.1、结构体创建 3.3.2、初始化 3.3.3、销毁数据 3.3.4、增容空间 3.3.5、尾插数据 3.3.6、头插数据 3.3.7、删除尾数据 3.3.8、打印数据 3.3.9、删除头数据 3.3…

设备管理系统-TPM(PC+APP/PDA全流程)高保真Axure原型 源文件分享

随着科技的不断发展&#xff0c;企业对于设备管理的需求也日益增强。为了满足企业在设备管理方面的各种需求&#xff0c;站长为大家整理了一套设备管理系统TPM&#xff08;PCAPP/PDA全流程&#xff09;高保真Axure原型&#xff0c;通过这套原型&#xff0c;企业能够实现对设备的…

TDSQL-C电商小助手,AI驱动的智能化数据洞察新纪元

前言&#xff1a; 在数字经济蓬勃发展的今天&#xff0c;电商行业作为数字化转型的先锋&#xff0c;正以前所未有的速度积累着海量数据。这些数据不仅是交易记录的简单堆砌&#xff0c;更是企业洞察市场趋势、优化运营策略、提升用户体验的宝贵财富。然而&#xff0c;如何从这…

【2024.9.28练习】青蛙的约会

题目描述 题目分析 由于两只青蛙都在跳跃导致变量多&#xff0c;不妨采用物理题中的相对运动思想&#xff0c;设青蛙A不动&#xff0c;青蛙B每次跳米&#xff0c;两只青蛙的距离为米。正常来说&#xff0c;只要模拟青蛙B与青蛙A的相对运动过程&#xff0c;最终当青蛙B与青蛙A距…

Goweb---Gorm操作Mysql数据库(一)

本文重点&#xff1a; db.AutoMigrate()这个函数的理解&#xff1a; AutoMigrate是GORM提供的一个方法&#xff0c;用于自动迁移你的模型&#xff08;即数据库表结构&#xff09;到数据库中&#xff0c;确保数据库表与你的Go结构体&#xff08;模型&#xff09;保持一致。 首先…

第十四届蓝桥杯真题Python c组D.平均(持续更新)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;蓝桥杯关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 【问题描述】 有一个长度为n的数组(n是10的倍数)&#xff0c;每个数 …

vscode配置Eslint后保存出现大量波浪线

解决问题&#xff1a;配置代码格式化 快捷键打开设置&#xff1a;ctrlshiftP 输入&#xff1a; format code 选择&#xff1a;

MySQL-数据库约束

1.约束类型 类型说明NOT NULL非空约束 指定非空约束的列不能存储NULL值 DEFAULT默认约束当没有给列赋值时使用的默认值UNIQUE唯一约束指定唯一约束的列每行数据必须有唯一的值PRIMARY KEY主键约束NOT NULL和UNIQUE的结合&#xff0c;可以指定一个列霍多个列&#xff0c;有助于…

qt6 使用QPSQL

qt6 自带pg数据库驱动&#xff1a; pro文件加个说明&#xff1a; 引用位置添加&#xff08;按需添加&#xff0c;这里我就大致加一下&#xff09;&#xff1a; test code: 理想情况当然是要用pool,这里只是演示调用而已 QSqlError DbTool::testConnection(const QString &…

LSTM预测未来30天销售额

加入深度实战社区:www.zzgcz.com&#xff0c;免费学习所有深度学习实战项目。 1. 项目简介 本项目旨在利用深度学习中的长短期记忆网络&#xff08;LSTM&#xff09;来预测未来30天的销售额。LSTM模型能够处理时序数据中的长期依赖问题&#xff0c;因此在销售额预测这类涉及时…

19款奔驰E300升级新款触摸屏人机交互系统

《19 款奔驰 E300 的科技焕新之旅》 在汽车科技日新月异的时代&#xff0c;19 款奔驰 E300 的车主们为了追求更卓越的驾驶体验&#xff0c;纷纷选择对爱车进行升级改装&#xff0c;其中新款触摸屏人机交互系统的改装成为了热门之选。 19 款奔驰 E300 作为一款经典车型&#x…

Vue和axios零基础学习

Vue的配置与项目创建 在这之前要先安装nodejs 安装脚手架 官网 Home | Vue CLI (vuejs.org) 先运行&#xff0c;切换成淘宝镜像源&#xff0c;安装速度更快 npm config set registry http://registry.npm.taobao.org 创建项目 用编译器打开一个空文件&#xff0c;在终端输入…