Newbie_calculations Hack-you-2014 XCTF

这个题真的好玩  核心其实 就是这个

#include <stdio.h>
#include<iostream>
#include<iomanip>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<iostream>
#include<map>
#include<time.h>
#include<queue>
#include <Windows.h>
#include "windows.h"
using namespace std;
int main()
{
    int s,i=0;
    s=-10000000;
    while(s)
    {
        i++;
        s--;
    }
    printf("%d\n",i);
    return 0;
}

运行的话 就是

也就是说 其实这个循环就是  s=i  其实也很好猜想 就是  s  要减到0 那么需要循环的次数 就是  -1000000的补码  而 补码打印出来 也就是 这个数  所以 还是那个数。。。。。 说起来有点绕。 但确实是这样

然后 修改一下 直接运行就好了

#include <stdio.h>
#include<iostream>
#include<iomanip>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<iostream>
#include<map>
#include<time.h>
#include<queue>
#include <Windows.h>
#include "windows.h"
using namespace std;
int mul(int a,int b)
{
    return a*b;
}
int add(int a,int b)
{
    return a+b;
}
int sub(int a,int b)
{
    return a-b;
}
int main()
{
  int v3; // eax
  int v4; // ST1C_4
  int v5; // ST20_4
  int v6; // ST20_4
  signed int i; // [esp+4h] [ebp-90h]
  signed int j; // [esp+8h] [ebp-8Ch]
  int v10[32]; // [esp+Ch] [ebp-88h]
  int v11; // [esp+8Ch] [ebp-8h]

  for ( i = 0; i < 32; ++i )
    v10[i] = 1;
  v11 = 0;
  puts("Your flag is:");
  v3 = mul(v10[0], 1000000000);
  v3 = sub(v3, 999999950);
  v10[0]=mul(v3, 2);
  v3 = add(v10[1], 5000000);
  v3 = sub(v3, 6666666);
  v3 = add(v3, 1666666);
  v3 = add(v3, 45);
  v3 = mul(v3, 2);
  v10[1]=add(v3, 5);
  v3 = mul(v10[2], 1000000000);
  v3 = sub(v3, 999999950);
  v3 = mul(v3, 2);
  v10[2]=add(v3, 2);
  v3 = add(v10[3], 55);
  v3 = sub(v3, 3);
  v3 = add(v3, 4);
  v10[3]=sub(v3, 1);
  v3 = mul(v10[4], 100000000);
  v3 = sub(v3, 99999950);
  v3 = mul(v3, 2);
  v10[4]=add(v3, 2);
  v3 = sub(v10[5], 1);
  v3 = mul(v3, 1000000000);
  v3 = add(v3, 55);
  v10[5]=sub(v3, 3);
  v3 = mul(v10[6], 1000000);
  v3 = sub(v3, 999975);
  v10[6]=mul(v3, 4);
  v3 = add(v10[7], 55);
  v3 = sub(v3, 33);
  v3 = add(v3, 44);
  v10[7]=sub(v3, 11);
  v3 = mul(v10[8], 10);
  v3 = sub(v3, 5);
  v3 = mul(v3, 8);
  v10[8]=add(v3, 9);
  v3 = add(v10[9], 0);
  v3 = sub(v3, 0);
  v3 = add(v3, 11);
  v3 = sub(v3, 11);
  v10[9]=add(v3, 53);
  v3 = add(v10[10], 49);
  v3 = sub(v3, 2);
  v3 = add(v3, 4);
  v10[10]=sub(v3, 2);
  v3 = mul(v10[11], 1000000);
  v3 = sub(v3, 999999);
  v3 = mul(v3, 4);
  v10[11]=add(v3, 50);
  v3 = add(v10[12], 1);
  v3 = add(v3, 1);
  v3 = add(v3, 1);
  v3 = add(v3, 1);
  v3 = add(v3, 1);
  v3 = add(v3, 1);
  v3 = add(v3, 10);
  v10[12]=add(v3, 32);
  v3 = mul(v10[13], 10);
  v3 = sub(v3, 5);
  v3 = mul(v3, 8);
  v3 = add(v3, 9);
  v10[13]=add(v3, 48);
  v3 = sub(v10[14], 1);
  v3 = mul(v3, -294967296);
  v3 = add(v3, 55);
  v10[14]=sub(v3, 3);
  v3 = add(v10[15], 1);
  v3 = add(v3, 2);
  v3 = add(v3, 3);
  v3 = add(v3, 4);
  v3 = add(v3, 5);
  v3 = add(v3, 6);
  v3 = add(v3, 7);
  v10[15]=add(v3, 20);
  v3 = mul(v10[16], 10);
  v3 = sub(v3, 5);
  v3 = mul(v3, 8);
  v3 = add(v3, 9);
  v10[16]=add(v3, 48);
  v3 = add(v10[17], 7);
  v3 = add(v3, 6);
  v3 = add(v3, 5);
  v3 = add(v3, 4);
  v3 = add(v3, 3);
  v3 = add(v3, 2);
  v3 = add(v3, 1);
  v10[17]=add(v3, 20);
  v3 = add(v10[18], 7);
  v3 = add(v3, 2);
  v3 = add(v3, 4);
  v3 = add(v3, 3);
  v3 = add(v3, 6);
  v3 = add(v3, 5);
  v3 = add(v3, 1);
  v10[18]=add(v3, 20);
  v3 = mul(v10[19], 1000000);
  v3 = sub(v3, 999999);
  v3 = mul(v3, 4);
  v3 = add(v3, 50);
  v10[19]=sub(v3, 1);
  v3 = sub(v10[20], 1);
  v3 = mul(v3, -294967296);
  v3 = add(v3, 49);
  v10[20]=sub(v3, 1);
  v3 = sub(v10[21], 1);
  v3 = mul(v3, 1000000000);
  v3 = add(v3, 54);
  v3 = sub(v3, 1);
  v3 = add(v3, 1000000000);
  v10[21]=sub(v3, 1000000000);
  v3 = add(v10[22], 49);
  v3 = sub(v3, 1);
  v3 = add(v3, 2);
  v10[22]=sub(v3, 1);
  v3 = mul(v10[23], 10);
  v3 = sub(v3, 5);
  v3 = mul(v3, 8);
  v3 = add(v3, 9);
  v10[23]=add(v3, 48);
  v3 = add(v10[24], 1);
  v3 = add(v3, 3);
  v3 = add(v3, 3);
  v3 = add(v3, 3);
  v3 = add(v3, 6);
  v3 = add(v3, 6);
  v3 = add(v3, 6);
  v10[24]=add(v3, 20);
  v3 = add(v10[25], 55);
  v3 = sub(v3, 33);
  v3 = add(v3, 44);
  v3 = sub(v3, 11);
  v10[25]=add(v3, 42);
  v10[26]=add(v10[26], v10[25]);
  v10[27]=add(v10[27], v10[12]);
  v4 = v10[27];
  v3 = sub(v10[28], 1);
  v3 = add(v3, v4);
  v10[28]=sub(v3, 1);
  v5 = v10[23];
  v3 = sub(v10[29], 1);
  v3 = mul(v3, 1000000);
  v10[29]=add(v3, v5);
  v6 = v10[27];
  v3 = add(v10[30], 1);
  v10[30]=mul(v3, v6);
  v10[31]=add(v10[31], v10[30]);
  printf("CTF{");
  for ( j = 0; j < 32; ++j )
    printf("%c", (v10[j]));
  printf("}\n");
  return 0;
}

get 到flag

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值