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

第二道re

题目来源:天狩CTF竞赛平台 Lihua's for

题目提示说是for循环,不管了干吧

先看加没加壳,没有,直接无脑IDA+F5

代码功能概述

程序会要求用户输入一个 flag,然后将输入的每个字符与索引值进行异或运算,并将结果与预定义的数据(unk_403040)进行比较。如果所有字符都匹配,则输出 "good~",否则输出 "error!"。

 _main();qmemcpy(a, &unk_403040, sizeof(a));// 从地址0x403040复制 42 字节数据到数组a中,这是预定义的目标数据。puts("input flag");scanf("%s", flag);// 提示用户输入 flag,并读取字符串到flag数组中。puts(flag);for ( i = 0; i <= 41; ++i )b[i] = i ^ flag[i];// 对输入的每个字符进行处理:将字符与它的索引位置进行异或运算,结果存入数组b。for ( i_0 = 0; i_0 <= 41; ++i_0 ){if ( a[i_0] != b[i_0] ){good = 0;break;}good = 1;}if ( good == 1 )printf("good~");elseprintf("error!");return 0;
}/* 逐个比较异或结果b与预定义数据a:如果有任何不匹配,将good设为 0 并跳出循环。只有当所有字符都匹配时,good才会保持为 1 */

 点进去&unk_403040这个值里面,发现有字符串

红框框就是我们要找的数据,下面还有,一共是42个,我们把它们的十六进制提取出来

 把这些十六进制写成一个列表,对它们进行异或运算:

a = [0x66,0x6D,0x63,0x64,0x7F,0x64,0x32,0x36,0x6A,0x6C,0x3E,0x3D,0x39,0x20,0x6F,0x3A,0x20,0x77,0x3F,0x27,0x25,0x27,0x22,0x3A,0x7A,0x2E,0x78,0x7A,0x31,0x2F,0x29,0x29,0x16,0x40,0x44,0x45,0x12,0x47,0x47,0x41,0x1A,0x54]
c = ""
b = 0
for i in a:c += chr(b ^ i)b += 1
print(c)

运行就出来flag了

flag{a41be465-a50f-4124-b7ba-2766aff6baf2}

相关文章:

  • UE 材质基础第二天
  • 线光谱共焦传感器:复杂材质检测
  • 【盈达科技】GEO优化实战策略
  • 基于PetaLinux的Zynq PS应用自启动全攻略
  • 浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第五章
  • 大模型(1)——基本概念
  • 达梦数据库对json字段进行操作
  • C++开源库argh使用教程
  • Qt Widgets模块功能详细说明,基本控件:QCheckBox(三)
  • JAVA Web 期末速成
  • DeepSeek 赋能机器人研发:从技术革新到场景落地
  • 【C/C++】C语言内存操作与字符串处理汇总
  • 简单实现网页加载进度条
  • Bootstrap 5 容器与网格系统详解
  • Java中的流详解
  • 2025ICPC邀请赛南昌游记
  • 【C语言基础语法入门】通过简单实例快速掌握C语言核心概念
  • 安防综合管理系统EasyCVR视频融合平台安防知识:门禁系统与视频监控系统如何联动?
  • 【Qwen开源】WorldPM: 扩展人类偏好建模
  • EMC基础知识-EFT(上)
  • 多家国有大行存款利率即将迎来新一轮下调
  • 上海发文加强直播经济技能人才培养:三年新培养持证直播技能人才5万名
  • 中国证监会副主席李明:目前A股估值水平仍处于相对低位
  • 央媒聚焦文明交流互鉴中的“上博现象” :跨越山海,抒写自信
  • 61岁云浮市律师协会副会长谭炳光因突发疾病逝世
  • 纪念|脖子上挂着红领巾的陈逸飞