其他分享
首页 > 其他分享> > XCTF no-strings-attached

XCTF no-strings-attached

作者:互联网

1.分析

32位文件,拖进ida pro分析

进入main函数

authenticate()函数中有一个decrypt函数

unk_8048B44是 success! 说明ws要和s2相同

fgets函数
char *fgets(char *str, int n, FILE *stream)
从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

strcmp函数
int strcmp(const char *str1, const char *str2)
str1 所指向的字符串和 str2 所指向的字符串进行比较

进入descrypt()函数:s是0x143A,0x1436,0x1437... dword_8048A90是0x1401,0x1402,0x1403,0x1404,0x1405


2. exp

参照decrypt()写一个exp.py得到flag

s=[0x3a, 0x36, 0x37, 0x3b, 0x80, 0x7a, 0x71, 0x78, 0x63, 0x66, 0x73, 0x67, 0x62, 0x65, 0x73, 0x60, 0x6b, 0x71, 0x78, 0x6a, 0x73, 0x70, 0x64, 0x78, 0x6e, 0x70, 0x70, 0x64, 0x70, 0x64, 0x6e, 0x7b, 0x76, 0x78, 0x6a, 0x73, 0x7b, 0x80]
v6 = len(s)
a2 = [1,2,3,4,5]
v7 = len(a2)
v2 = v6
dest = s
v4 = 0
while v4<v6:
        dest[v4] -= a2[v4%5]
        v4+=1

flag = ''
for j in dest:
    flag+=chr(j)
print(flag)

标签:读取,str2,str1,attached,XCTF,0x78,0x70,0x73,strings
来源: https://www.cnblogs.com/pikachuuuuu/p/14880160.html