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

- 这里推荐使用edb动态调试,因为gdb无法下断点。可以比较清晰的看出栈里的变化。
- 第一个输入是这样的,第一句歌词的地址是Rbp-e50,第二句歌词有两个分别是Rbp-d40和Rbp-e78,算出是第一个符合情况。输入的是C字符,其实对于题目更简单的是在四个一组中选择一个,相当于在ABCD中选择。
-
相关文章:
-
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
相关资源
-
下载
2023-01-11
-
下载
2023-01-18
-
下载
2023-01-15