re1-wp
打开附件发现需要输入正确的flag:
将附件拖入ida中:
F5(Fn+F5)查看伪代码:
分析代码可知需要输出一个字符串,存储到变量v9中。如果v9的值与v5的值相等,即v3=0时,则会得到unk_413e90中的值,否则得到aFlag_0的值。strcmp函数用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
跟进unk_413e90,得到 flag get :
跟进aFlag_0,得到 ‘flag不太对呦’ :
说明当v5=v9时,得到正确的flag,即flag存储在v5中。
分析函数可以看出_mm_storeu_si128()类似于memset(),将xmmword_413E34的值赋值给v5,因此正确的flag应该在xmmword_413E34中。下面补充了memset()函数的描述。
跟进xmmword_413E34,得到一串十六进制的数:
用ida快捷键A,将其转化成字符串:
将得到的字符串带入附件运行得到flag get:
则flag为DUTCTF{We1c0met0DUTCTF}。