题目

CSDN资源下载(免积分)

文件

先查壳,有壳脱壳,没壳拖入IDA
32位无壳exe

IDA

image.png

答案

DUTCTF{We1c0met0DUTCTF}

查看Writeup

解题

解题思路

IDA经常无法正确识别数据类型并显示,通过对比运行程序的情况,可以发现程序会输出三行字符串,并要求输入数据:
image.png
即对应IDA中“scanf”上面的3个“Printf”,未被识别为字符串的&byte_413E**就是提示性字符串,在IDA中将其转换(按“A”键)字符串:
image.png
返回IDA的代码界面,可以发现将输入的字符串和内置的v5进行对比:
image.png
双击后跳转到数据地址,由于:

  1. 数值符合英文字母可见字符ASCII的区间(十六进制范围(0x41-0x5A ∩ 0x61-0x7A))
  2. 题目类型和代码中的“strcmp”知道是字符串对比

所以将该值选中后按“A”键转为字符串格式:
image.png
至此,所有字符串都已经明确显示:
image.png
IDA代码窗口显示如下:
image.png

⚠数据显示问题之显示格式⚠

由于IDA是反编译器,经常不能准确识别数据格式,在Hex窗口可以查看十六进制的原始数据:
1625831023(1).jpg
到这一步的时候,会发现上面一堆数据格式转化也有点多余,但是在不清楚情况的时候需要根据上下文和功能,将数据进行灵活的转换。
PS:说这类签到题用“String”列出可见字符,或者010等文本编辑器打开后搜索“flag”or“CTF”,都是因果倒置和幸存者偏差,不建议用这样的解题思路。