我们以一个简单的格式化字符串为例:

代码逻辑很简单,首先读入a,然后printf格式化字符串,puts是为了加载puts函数让我们可以利用patch通过将printf改成puts来解决这个漏洞。
gcc编译,开启nopie,这样函数的plt地址都是固定的。


运行结果:

接下来我们利用IDA的patch功能将这个漏洞修复。现在我定位到了出现格式化字符串漏洞的printf的汇编语言的位置。

接下来我们使用patch插件,快捷键是Crtl+Alt+K。
修复格式化字符串漏洞:从ida patch到程序修改
这篇博客介绍了如何利用IDA工具修复一个格式化字符串漏洞。通过读取输入,利用printf的格式化特性,发现潜在的安全问题。然后,通过IDA的patch功能定位到printf的汇编代码,将其替换为puts,并使用nop补全保持代码大小一致。最终,将修改应用到文件中,成功修复漏洞并验证了修复效果。
我们以一个简单的格式化字符串为例:

代码逻辑很简单,首先读入a,然后printf格式化字符串,puts是为了加载puts函数让我们可以利用patch通过将printf改成puts来解决这个漏洞。
gcc编译,开启nopie,这样函数的plt地址都是固定的。


运行结果:

接下来我们利用IDA的patch功能将这个漏洞修复。现在我定位到了出现格式化字符串漏洞的printf的汇编语言的位置。

接下来我们使用patch插件,快捷键是Crtl+Alt+K。
940
3358
990
1614
1795
2万+

被折叠的 条评论
为什么被折叠?