文章目录
第一次awd(和985的大佬对干)
总结
我们队没pwn手,两个re直接毫无战斗力,被人按在地上摩擦,今天有个题连题都没看到,然后数据库就被别人打崩了(重置机会用完了
文章目录
[CFI-CTF 2018]Automated Reversing
直接把solution
文件和binaries文件拷贝到linux里面,然后运行solution就出flag
CFI{1s_th1s_4_pr0g_ch4ll_0r_4_r3ve3se_ch4ll?}
或者执行
python3 generator.py
然后里面text就会变成解密后的原文
[FlareOn1]Shellolololol(SMC)
这里f8的话直接崩溃,而且你的断点没法断入call里面的代码
第一次异或
esi里面存放的是0019FD50
,很明显,smc
第二次异或
esi里面存放的是0019FDA3
,很明显,smc
第三次异或
esi里面存放的是0019FE23
,很明显,smc
第四次异或
这里感觉好像和不太一样,ESI是0019FE5C
(这个的话感觉是为了将要执行的代码解密获得正确的执行代码)和EBX是0019FCFB
,把这里全部执行完后,
把ESI进行dump处理,然后往上翻看内存区域
such.5h311010101@flare-on.com
总结
四次的smc,最后巧妙地根据这里的smc一边解出后面执行代码,一边作为flag(其实flag在程序结束前已经产生,只需要过了这里后,即可在内存区域查看到flag)
[CFI-CTF 2018]powerPacked
int __cdecl main(int argc, const char **argv, const char **envp)
{
int i; // [sp+8h] [-58h]
_BYTE v5[32]; // [sp+10h] [-50h] BYREF
char v6[24]; // [sp+30h] [-30h] BYREF
int v7; // [sp+48h] [-18h]
const char **v8; // [sp+4Ch] [-14h]
v7 = argc;
v8 = argv;
strcpy(v6, "EHK}kanqxgarqygtre");
printf(268930484, argv, envp);
_isoc99_scanf(0x10078DC8, v5);
for ( i = 0; i < 21; ++i )
v6[i] -= 2;
if ( strcmp(v5, v6) ) // 用v6字符串EHK}kanqxgarqygtre各项减2后得input
puts(0x10078E00);
else
puts(0x10078DD0);
return 0;
}
脚本
a="EHK}kanqxgarqygtre"
flag=""
for i in range(len(a)):
flag+=chr(ord(a[i])-2)
print(flag)
CFI{i_love_powerpc}