利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached

一、首先来看静态调试的解决办法

1、文件识别

直接拖进PE识别工具 elf/32位
利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第1张图片可以看出不是window可执行的PE文件,而是以Linux为内核的ELF文件,要在Linux系统下进行运行。

2、进行汇编与反汇编

话不多说,程序直击拖进ida.(注意这里的程序是32位的,要用32位ida来进行反汇编)

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第2张图片
利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第3张图片

加密是对s和dword_8048A90进行操作
s代码段

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第4张图片

由于我们一个一个读取数据太麻烦这里我们利用ida的内置脚本IDC将十分方便

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第5张图片在这里插入图片描述
这样我们就得到s全部的数据

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第6张图片
接下来我们再打一脚本来模拟加密过程

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第7张图片

运行之后我们就可以得到答案

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第8张图片

通过静态调试后我们发现flag为9447{you_are_an_international_mystery}

二、Linux动态调试gdb来解决该问题

从上面ida的分析我们可以知道,加密过程decrypt运行完成后只要知道返回值dest即可,所以利用gdb在decrypt下断点即可

1、gdb ./文件名 载入程序

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第9张图片

2、b decrypt(函数名)在decrypt下断点

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第10张图片

3、r运行

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第11张图片

4、n单步进入

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第12张图片

5、x查看值 /s以字符串的形式 $eax 查看寄存器eax的值

利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached_第13张图片

你可能感兴趣的:(gdb,linux,安全,经验分享,其他)