CGctf re方向的俩道题

CGctf re方向的俩道题

1.simple machine

有俩个主要函数,第一个是加密
c=“feeddeadbeefcafe”
for i in range(54):
flag[i]=flag[i]^ord(c[i%16])
第二个函数是换位。。。这个没看懂一开始
嵌套循环,外层令他为i,内层为j,
简述一下就是把原flag中i+3j给了新flag的18i+j
下面附上py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
b=[0,   3,   9,  58,   5,  14,   2,  22,  15,  31,
   18,  86,  59,  11,  81,  80,  57,   0,   9,  31,
   80,   4,  20,  87,  59,  18,   7,  60,  28,  58,
   21,   5,  11,   8,   6,   1,   4,  18,  22,  57,
    5,  11,  80,  87,   9,  18,  10,  39,  19,  23,
   14,   2,  85,  24]
a=[0]*54
c="feeddeadbeefcafe"
for i in range(3):
    for j in range(18):
        a[i+3*j]=b[18*i+j]
for i in range(54):
    a[i]=a[i]^ord(c[i%16])
flag=''
for i in a:
    flag+=chr(i)
print(flag)

得flag{wh4t_a_fuck1ng_4ss3mbly_styl3_C_progr4mm1ng_c0de}

2.homuraVM

这个题目。。。硬肛还是能搞下来的。。。

C   n2 -= 2*(n1&flag1)
G   --n2
M   n2=n1+flag1
T   ++n2
a   --n1
h   next flag1
m   flag1++
o   last flag
r   n1++
u   --flag1
v   n2=n1
[]  loop for flag1
{}  loop for n2
h[ur]ov
flag[i]=0
n1=n2=flag[i]

hv{aG}[ur]ov
flag[i]=0
n1=n2=flag[i]

c1=count'a'   --
c2=count'r'   ++
c=c2-c1

MCh{mG}
n2=flag[i]+c+flag[i-1]
flag[i]=flag[i]+c+flag[i-1]-2*((flag[i]+c)&flag[i-1])

上面吧ida反编译出的都简要写了下,所有的字符串有固定格式除了第一句话其他都是hv{aG}[ur]ov+一堆a和r+MCh{mG}
a和r的作用也在上面写了,下面附上c代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[34]={27,
114,
17,
118,
8,
74,
126,
5,
55,
124,
31,
88,
104,
7,
112,
7,
49,
108,
4,
47,
4,
105,
54,
77,
127,
8,
80,
12,
109,
28,
127,
80,
29,
96};
int c[34]={0,
-3,
2,
0,
3,
-2,
1,
5,
1,
-1,
4,
-1,
0,
2,
2,
5,
2,
-2,
2,
1,
1,
2,
0,
2,
2,
2,
6,
-3,
-1,
-1,
2,
-2,
-1,
0
};
//flag[i]=flag[i]+c+flag[i-1]-2*((flag[i]+c)&flag[i-1])
int i,j;
for(j=32;j>=0;j--)
{
for(i=1;i<128;i++)
{
    if(a[j+1]==i+c[j+1]+a[j]-2*((i+c[j+1])&a[j]))
    {
        a[j+1]=i;
        break;
    }
}
}
for(i=1;i<128;i++)
{
if(a[0]==i+c[0]+a[33]-2*((i+c[0])&a[33]))
    a[0]=i;
}
for(i=0;i<34;i++)
{
    printf("%c",a[i]);
}
    return 0;
}

flag{D3v1L_H0mur4_f**k_y0uR_bra1N}
咕咕咕的博客都附上了
就这样草草了事了
太菜了我还要刷题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值