DMCTF2020 re3
根据提示,用PEid和IDA的Findcrypt插件,发现big number:21232f297a57a5a743894a0e4a801fc3
这么一长串数字,要么RSA
,要么散列函数,但这个程序明显不是RSA,直接cmd5挨个试一遍,是md5加密,解出来是admin
ACTF2020 Oruga
明显地图题目,主函数先检查flag
格式,然后再做处理。
_BOOL8 __fastcall sub_78A(char *a1)
{
int v2; // [rsp+Ch] [rbp-Ch]
int v3; // [rsp+10h] [rbp-8h]
int v4; // [rsp+14h] [rbp-4h]
v2 = 0;
v3 = 5;
v4 = 0;
while ( map[v2] != '!' )
{
v2 -= v4;
if ( a1[v3] != 'W' || v4 == -16 ) // up
{
if ( a1[v3] != 'E' || v4 == 1 ) // right
{
if ( a1[v3] != 'M' || v4 == 16 ) // down
{
if ( a1[v3] != 'J' || v4 == -1 ) // left
return 0LL;
v4 = -1;
}
else
{
v4 = 16;
}
}
else
{
v4 = 1;
}
}
else
{
v4 = -16;
}
++v3;
while ( !map[v2] )
{
if ( v4 == -1 && (v2 & 0xF) == 0 )
return 0LL;
if ( v4 == 1 && v2 % 16 == 15 )
return 0LL;
if ( v4 == 16 && (unsigned int)(v2 - 240) <= 0xF )
return 0LL;
if ( v4 == -16 && (unsigned int)(v2 + 15) <= 0x1E )
return 0LL;
v2 += v4;
}
}
return a1[v3] == '}';
}
规则是:
- 起点是第一个字符
- 方向对应字母
- 一个方向一直走,走到障碍换方向,走到边界直接退出
flag{MEWEMEWJMEWJM}
网鼎杯2020 signal
哎~该学的迟早要学……之前打moe的时候就有让学这个玩意,但是真的懒啊,不想学……现在就得学了。稍微会一点点一点点angr
,这个题就很简单,直接贴代码吧:
import angr
p = angr.Project("./signal.exe",auto_load_libs=False)
sta = p.factory.entry_state()
sim = p.factory.simulation_manager(sta)
sim.explore(find = 0x40175E)
print(sim.found[0].posix.dumps(0))
# 757515121f3d478
也可以用Ponce
做,但是我这里试了好几遍不知道为啥,只能搞出来前13位……