@TOC

press

类似brainfuck的一个解释器
在这里插入图片描述

主要的函数逻辑都在sub_40094b里
在这里插入图片描述
在这里插入图片描述

经过动态调试后,可以发现逻辑如下
1 str=str+0xa0
2 str=str-flag[i]
3 str*=5
4str+=2

同时前一位的输出作为下一位的输入(str)
在这里插入图片描述

写爆破脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<stdio.h>
#include<string.h>
unsigned char a[100]={
0,96 ,225 ,47 ,5 ,121 ,128 ,94 ,225 ,197, 87 ,139, 204 ,92, 154 ,103 ,38
,30 ,25 ,175 ,147 ,63 ,9 , 226 ,151, 153, 123 ,134 ,193 ,37 , 135, 214, 12
,221, 207, 42 , 245, 101, 14 , 115, 89 ,29 , 95 , 164 ,244 ,101 ,104, 209 ,61
,210, 152 ,93 , 254 ,91 , 239, 91 , 204};//56+1
int main(){
int q=0;
for(int j=0;j<56;j++){


for(int i=33;i<127;i++){
q=a[j];
q=q+0xa0;
q=q%256;
q=q-i;
if(q<0){
q+=256;
}
q=q*5;
q=q%256;
q=q+2;
q=q%256;
if(q==a[j+1]){
printf("%c",i);
}
}


}


return 0;
}

在这里插入图片描述
base64解密即可

Lithops

函数逻辑十分简单,甚至最后是一个没有参数印象的字符串比较,只需要把我们的字符串考出来写脚本即可
在这里插入图片描述在这里插入图片描述

1
2
3
a=b'\xE4\xB8\x8D\xE5\x81\x9A\xE4\xBC\x9F\xE5\xA4\xA7\xE6\x97\xB6\xE4\xBB\xA3\xE7\x9A\x84\xE6\x97\x81\xE8\xA7\x82\xE8\x80\x85'

print(a.decode('utf-8') )

这里有个新知识点就是
api hashing
通过把api经过hash等一些列操作,隐藏他在导入表里的符号,使我们不能很快的发现他
解决办法:动态调试可以解决一切

xor

控制流平坦化 上脚本
在这里插入图片描述去除后 存在虚假控制流 用脚本除,除不掉,结合动态调试,硬分析
(自从上次那个l3h的比赛,见识到了大师傅门硬肝混淆的题 ,我觉得我也不怕了)
在这里插入图片描述分析了一波 大概就是不停的乘2,当时还想着试试爆破,后来跑去看别的题了,
结束看wp发现是crc64 (真看不出来)
果然没有除不干净 分析很费劲
说的那个ida插件我也没有用过 坐等一波
找到一个师傅写的脚本 比官方的简洁易懂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cmp = [0x32E9A65483CC9671, 0xEC92A986A4AF329C, 0x96C8259BC2AC4673,
0x74BF5DCA4423530F, 0x59D78EF8FDCBFAB1,0xA65257E5B13942B1]

for i in range(6):
for j in range(64):
if (int(cmp[i])&1)==1:
cmp[i] ^= 0xB1234B7679FC4B3D
cmp[i] = cmp[i]>>1
cmp[i] |= 0x8000000000000000
else:
cmp[i] = cmp[i]>>1

for i in range(6):
print(hex(cmp[i]), end=',')

不过说明我当时想的是对的,当时唯一没想出来的是溢出问题,
现在明白了 右移一位 再补上最高位(9*9<20)

生瓜蛋子

通过比赛学梗
(md 我还以为这段话有什么深意 是我见识短了
逻辑很简单 比较md5值(肯定出不来
然后搜索字符串发现一堆md5值 试了一下逐字节爆破 不对
然后我以为是分析md5算法问题
wp说有虚拟机 我还真没发现
看不懂 溜溜球 等一篇好文章出来
在这里插入图片描述

Hideit

湖湘杯就做了这么一道题
稍等更新
(更):
简单说一下好了,调用了一段shellcode,加载了一个dll
运用了xxtea和chacha20算法,通过动态调试可以拿到相关数据