1.首先我们先下载提供的附件,用Exeinfo PE打开查看信息。
发现程序是ELF文件,并且程序是64位的。
2.使用静态分析工具IDA进行分析
从main函数开始分析,使用F5查看伪代码
可以看到先判断v5是否大于s存储字符串的长度,然后通过运算,最后将得到的flag写入文件。
我们发现这个运算其实是进行了一个(v5 & 1)的运算,实际上就是判断v5的二进制最后一位是否为1若是返回值为 1,否则为 0,实际就是判断奇偶数,最后一位为1,为奇数 v3=1,否则为偶数 v3 = -1;
然后将 s[v5] 加上 v3 填充到 t 的首地址加 10 加 v5 处
然后我们跟踪t和s,点击t和s发现
我们发现u 的长度和上面计算得到的字符长度一样,这时我们就能确定上面计算的字符就是本题flag。
3.用spyder编写代码得出flag
得到flag:SharifCTF{b70c59275fcfa8aebf2d5911223c6589}