whatamitoyou

题目

  • 这是CTF中一个简单的逆向题,题目提示是一个歌曲,可以百度下。

解题

  • 首先执行一下这个文件。
    sudo ./whatamitoyou
  • 发现出现段错误。
  • 然后用64位IDA静态分析,f5反汇编,可以看出main函数有三个参数,在main函数后面可以看出需要我们输入数组,这个文件才能执行得到flag。对于main函数,它先是进行了一连串的定义,赋值,然后运行一些小函数memset,小函数中又有一大串16进制数,转换成字符串,发现是这首歌的歌词。
    watamitoyou 头大
  • 其实文件主要是执行这一小块汇编语句。
  • 这些汇编语句还是比较绕的,有一些废话,但总的思路是Rax=[rax+rdx*8]=[ [rbp-8]+ ([rbp-11h]-65+32)*8],前一句歌词的地址+(输入-65+32)*8是后一句歌词的地址。然而具体的栈上是4个4个一组存入的。首先rax从歌名的地址[rbp-1CA0h]开始每次加16,直到最后一句歌词[rbp-4d0h]的出现,才输出flag。

watamitoyou 头大

  • 这里推荐使用edb动态调试,因为gdb无法下断点。可以比较清晰的看出栈里的变化。
    watamitoyou 头大
  • 第一个输入是这样的,第一句歌词的地址是Rbp-e50,第二句歌词有两个分别是Rbp-d40和Rbp-e78,算出是第一个符合情况。输入的是C字符,其实对于题目更简单的是在四个一组中选择一个,相当于在ABCD中选择。
    watamitoyou 头大

相关文章:

  • 2022-03-05
  • 2021-06-05
  • 2022-12-23
  • 2022-12-23
  • 2021-12-13
  • 2021-11-26
  • 2021-12-09
猜你喜欢
  • 2021-05-24
  • 2021-09-22
  • 2022-12-23
  • 2022-12-23
  • 2021-05-12
  • 2021-07-15
  • 2021-08-30
相关资源
相似解决方案