Buuctf-Reverse-新年快乐 题解&思路总结

下载文件

 打开文件,不管输入什么都无回显 

1、查壳(发现有一个UPX壳)

UPX的介绍

。。。如果我们把带壳的文件直接放到ida中分析

 此处就只有两个函数

 。。。无法获得有效信息

2、使用脱壳软件脱壳

 点击脱壳后,桌面上会新生成一个脱完壳的文件

 3、把这个脱壳文件放入ida32进行分析

 Shif+F12查看字符串(找到关键词) 

双击字符串,查看引用该字符串的位置 

双击引用该字符串的位置,进入到流程图

 直接按F5查看伪代码

strcpy(Str2, "HappyNewYear!");

——>HappyNewYear!这个字符串复制到 Str2
Strlen(Str2)

——>返回字符串Str2的长度

strncmp(Str1, Str2, strlen(Str2))

——>把字符串Str1和字符串Str2两字符串进行比较,最多比较前(字符串Str2的长度)的长度,当str1=str2时,返回值=0

if ( !strncmp(Str1, Str2, strlen(Str2)) )

——>设a=strncmp(Str1, Str2, strlen(Str2)),原式可转化为if(!a),仅当!a为真(此时a为0)时,if条件成立,返回puts(aThisIsTrueFlag)

双击puts(aThisIsTrueFlag),可以看到puts输出的字符串就是this is true flag! 

因为最后输出的字符串是this is true flag!,所以可以推出Str1和Str2是相等的,Str2字符串的内容就是HappyNewYear!

得到flag:flag{ HappyNewYear!}

过程总结

题目条件:

  1. PE文件(exe文件是属于PE文件的一种)

做题步骤:

  1. 双击exe文件看有无信息
  2. 使用查壳软件查壳,了解程序是多少位的(64位或32位)
  3. 有壳文件先去壳
  4. 使用ida进行分析(用Shift+F12查看一下字符串,寻找关键词(如flag等))

ida分析过程:

  1. Shift+F12查看一下字符串,寻找关键词(如flag等) ,如没有关键词,就在main函数里查找信息
  2. 双击字符串,查看包含该字符串的位置
  3. 查看引用该字符串的详细地址
  4. 使用F5反汇编,查看伪代码
  5. 分析伪代码(选中数字后按键盘“R”键,即可将数字转换为字符;选中变量后 ,按下键盘“X”键查看该变量的交叉引用)

猜你喜欢

转载自blog.csdn.net/m0_62239233/article/details/130179136