老套路,拖进IDA然后F5

没错就系偶
输入字符串v9,如果v5和v9相等(即v3 = 0),输出flag get。所以我们只需要让v9和v5相等就可以了。(备注:strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。)
第十行的意思大概就是memset,就是把后面的赋值给v5,(右键点击Hide casts会有神奇发现)然后双击后面的一串康康——

以上
然后看看地址413E44里面,是一串数字(十进制),右键按R转换成字符串——'0tem0c1eW{FTCTUD',把两个地址里面的合并——{FTCTUD0tem0c1eW{FTCTUD。以下内容划重点!!
这里要跟大家普及一个知识了,即大端与小端——大端:高字节存储在低地址,低字节存储在高地址 ;小端:高字节存储在高地址,低字节存储在低地址。
链接指向:https://www.cnblogs.com/berry/articles/1588084.html(大端和小端)
假设一个十六进制数0x(高位)12345678(低位):
大端的存储方式是:(低地址)12,34,56,78(高地址),然后读取的时候也是从前往后读
小端的存储方式是:(低地址)78,56,34,12(高地址),然后读取的时候是从后往前读取
所以,最后的flag应该是:DUTCTF{We1c0met0DUTCTF}
(32位通常是小端存储,64位通常是大端存储)