直接看代码好了,ACTF{}部分是全文匹配,主要是这部分:
for ( i = 0; i <= 15; ++i ) {
if ( *((_BYTE *)&v1 + i) > 64 && *((_BYTE *)&v1 + i) <= 90 )
*((_BYTE *)&v1 + i) = (*((char *)&v1 + i) - 51) % 26 + 65;
if ( *((_BYTE *)&v1 + i) > 96 && *((_BYTE *)&v1 + i) <= 122 )
*((_BYTE *)&v1 + i) = (*((char *)&v1 + i) - 79) % 26 + 97;
}
最后这部分要和上面v15开始的部分一样
其实就是大写字母位移14,小写字母位移18
Encoded :81,115,119,51,115,106,95,108,122,52,95,85,106,119,64,108
payload没留,口胡一下吧:
a = [81,115,119,51,115,106,95,108,122,52,95,85,106,119,64,108]
ans = “”
for i in a :
if i <= 90 && i > 64 :
ans += chr(i-14)
elif i > 96 && i <= 122 :
ans += chr(i-18)
else
ans += chr(i)
print(ans)
flag也没留,太久之前做的了