ida如何识别linux内核函数,利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached...

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

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

1、文件识别

直接拖进PE识别工具 elf/32位

87edd0940c4299e11fe187011004d9aa.png可以看出不是window可执行的PE文件,而是以Linux为内核的ELF文件,要在Linux系统下进行运行。

2、进行汇编与反汇编

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

4303d5b841f61892e62228d15492ef99.png

21d06fdac0c861b0bfff2c84c5a7d296.png

加密是对s和dword_8048A90进行操作

s代码段

1852f3da8efa79f8b36786430429559f.png

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

68668d6e5299bd861271febf4f317174.png

7294c3f97e46f85f925f059f046fdb5b.png

这样我们就得到s全部的数据

d47ef5b0ba55ccad6e922e7d4ed9b950.png

接下来我们再打一脚本来模拟加密过程

09fb22a9e3e0fba9c55c5e9541ca9884.png

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

dd4b8f2054d42ba3b66e94c5d5c710a9.png

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

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

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

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

ffd10551b53d3c3b13131d1ac0c2cb9a.png

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

0fa4539bfa2847e914973bfee42df397.png

3、r运行

d233dedcbcfa45e2b7d875cbedd0dd06.png

4、n单步进入

b1d856bd894d7ca29c90340204b3007a.png

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

0a1dae416e0a9fba18b22a9732590c4e.png

文章来源: blog.csdn.net,作者:HeartEarth,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_50971344/article/details/113576920

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值