一篇文章学会格式化串漏洞

admin 2021年9月10日10:42:17评论97 views字数 707阅读2分21秒阅读模式
一篇文章学会格式化串漏洞
一篇文章学会格式化串漏洞
一篇文章学会格式化串漏洞

文章介绍

一篇文章学会格式化串漏洞
一篇文章学会格式化串漏洞


本文主要讲解格式化串漏洞

1.格式化串漏洞介绍

一篇文章学会格式化串漏洞
一篇文章学会格式化串漏洞


    格式化串漏洞产生于数据输出函数中对输出格式解析的缺陷,其实这也是比较简单的一种漏洞

    首先来看一段特别简单的代码,这就是新手入门学习的输出语句,第一个printf会成功输出,10,20。但是到了下方这个printf,缺少了变量列表。只给了三个%d,那么会输出什么呢?

int main(int argc, char* argv[]){  int a = 10;  int b = 20;  printf("%d,%dn",a,b);  printf("%d,%d,%d");  system("pause");  return 0;}

    可以看到第二个程序输处的内容如下,但是也把10,20输出了。

一篇文章学会格式化串漏洞

我们看一下两次的栈内情况,当调用第二个printf的时候,会将格式控制符,变量1,和变量2都会打印出来。

一篇文章学会格式化串漏洞

现在进入OD验证一下,下方笔者圈住的地方,就是第一次压栈情况

一篇文章学会格式化串漏洞

2.用printf读内存数据

一篇文章学会格式化串漏洞
一篇文章学会格式化串漏洞


    如果只单单通过一个printf,是无法造成危害很大的漏洞。这就类似于web漏洞中"组合拳",使漏洞攻击危害最大化。

    我们通过printf读内存数据,看下方漏洞代码,通过print输出参数

int main(int argc, char* argv[]){
printf(argv);
return 0;}
    看如下利用过程,其实这就类似于printf("%x,%x...")用来读内存数据,如果条件允许的情况下,是可以灵活运用,劫持进程或者执行shellcode的 。

一篇文章学会格式化串漏洞

关注公众号吧~~下方扫一扫

一篇文章学会格式化串漏洞
一篇文章学会格式化串漏洞


微信关注“安全族”,长期致力于安全研究

一篇文章学会格式化串漏洞




本文始发于微信公众号(安全族):一篇文章学会格式化串漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年9月10日10:42:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一篇文章学会格式化串漏洞http://cn-sec.com/archives/393059.html

发表评论

匿名网友 填写信息