BUUCTF 逆向工程(reverse)之xor

"本文介绍了如何使用逆向工程解决一个基于xor操作的解密挑战。在C语言的代码示例中,可以看到一个检查flag正确性的主函数,涉及字符串异或操作。关键信息存储在一个全局变量global中,通过Python脚本逆向异或过程,成功解密得到了flag{QianQiuWanDai_YiTongJiangHu}
摘要由CSDN通过智能技术生成

题目:
or的敌人,and 有个兄弟叫or,or有个敌人叫xor,那么你能帮助or战胜他的敌人xor吗,xor的奥秘就在附件中,开始战斗吧! 注意:得到的 flag 请包上 flag{} 提交
用IDA打开,并进入到主函数中

这里科普一下小知识:假如

  • x = 212 转化为二进制为 :11010100
  • y = 155 转化为二进制为:10011011
  • z 等于 x 和 y 异或的结果:x ^ y = 01001111

则他们的关系为:

  • z = x ^ y
  • x = z ^ y
  • y = z ^ x
int __cdecl main(int argc, const char **argv, const char **envp)
{
   
  char *v3; // rsi
  int result; // eax
  signed int i; // [rsp+2Ch] [rbp-124h]
  char v6[264]; // [rsp+40h] [rbp-110h]
  __int64 v7; // [rsp+148h] [rbp-8h]

  memset(v6, 0, 0x100uLL);
  v3 = (char *)256;
  printf("Input your flag:\n", 0LL);
  get_line(v6, 256LL);
  if ( strlen(v6) != 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值