holy-grail-350
holy-grail-350-wp
0x00

 ELF类型的64位程序。
    找到其中有一个validChars函数。

    可知输入字符串的每一个值c满足(c&0xDF-65)<=0x19 or c == 63。
    还发现了一个函数stringMod,如下:

    返回的值大于等于0,其实主要是让v4=0。这个函数的逻辑挺麻烦的,首先是固定字符串的第0、3、6、…、15位,然后对整个字符串异或,且要求异或后的字符串v5满足(v5[i*3]*v5[i*3+1])%v5[i*3+2]=masterArray[i],同时还原后的字符串满足(c&0xDF-65)<=0x19 or c == 63。其中坑的一个点是:当找满足(v5[i*3]*v5[i*3+1])%v5[i*3+2]=masterArray[i]+v5[i*3+2]*k的k时,必须让k足够大,否则就会得到flag:tuctf{AfXXXanOrEuropean?},实际上flag是tuctf{AfricanOrEuropean?}。
 其实这个题挺费时间的,中间踩了许多坑,例如知识点2。直接上最终脚本:
1  | #!/usr/bin/env python  | 
0x01
 看了其他师傅的wp基本都是这么做的。
知识点1:
1  | do{  | 
1  | while(True):  | 
上述两个例子等价。
知识点2:
 C/C++中的int类型为4字节。
留言
- 文章链接: https://wd-2711.tech/
 - 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!