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 许可协议。转载请注明出处!