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

第二道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}

http://www.xdnf.cn/news/7409.html

相关文章:

  • 网络工程师案例分析
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(24):受身形
  • 定积分,不定积分,变限积分和反常积分的对比记忆
  • solana钱包管理模块
  • Unity使用sherpa-onnx实现说话人识别
  • pinia.defineStore is not a function
  • 破解建筑/工业末梢能耗黑洞:智能分项计量改造方案
  • CS50x 01 c
  • 最小质因子之和(JAVA)线性筛
  • 内置分流器直流表:新能源高精度计量核心技术突破
  • Halcon设置不同分辨率来读取摄像头图片
  • 【QT】一个界面中嵌入其它界面(一)
  • vue2.0 组件
  • YoloV8改进策略:卷积篇|风车卷积|即插即用
  • python数学运算 2024年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
  • 涨薪技术|0到1学会性能测试第71课-T-SQL调优
  • 【Linux系统】Linux入门系统程序−进度条
  • 【esp32 控制台】-命令
  • 抽奖相关功能测试思路
  • Python学习之Flask框架(二)
  • 【达梦数据库】过程、函数、包头和包体详解零基础
  • Linux串口绑定
  • 佰力博与您探讨绝缘材料介电性能测试的方法。
  • Linux权限练习题
  • C++:因子问题
  • 基于SpringBoot的小型民营加油站管理系统
  • 【JAVA】使用javax.mail发送qq邮件
  • Notepad++ 学习(三)使用python插件编写脚本:实现跳转指定标签页(自主研发)
  • [Linux排查] “Permission Denied“?一文解决Linux文件/目录权限不足问题
  • 头歌之软件工程-用例设计