IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

网络安全之溢出利用FILE结构体

发布时间:2016-12-02 21:39文章来源:互联网文章作者: 佚名点击次数:
最近的上海大学生网络安全赛就只出了一题pwn450,对于还不是很会的我,瞬间懵逼,不过大佬还是大佬,最后还是挺多大佬做出来了,不过反正我没做出来,最后看题解,用到了两个点,一个是堆溢出,另一个就是利用这个FILE结构体做文章;菜鸡的我只有一个一个学,

最近的上海大学生网络安全赛就只出了一题pwn450,对于还不是很会的我,瞬间懵逼,不过大佬还是大佬,最后还是挺多大佬做出来了,不过反正我没做出来,最后看题解,用到了两个点,一个是堆溢出,另一个就是利用这个FILE结构体做文章;菜鸡的我只有一个一个学,堆溢出的这点后面再学,先学习了如何利用FILE结构体,也就写出了这篇文章。学习的过程主要也是看大牛的博客文章写出来的,在最后也会附上相应的文章。

一、结构体介绍

首先介绍下FILE结构体,下面图就是FILE结构体:

\

平常我们正常使用FILE结构体的情景是:

\

此时,系统会给应用程序申请一段空间将相应数据赋值好后然后将地址返回给fp。事实上,系统并不是直接分配的FILE(_IO_FILE)结构体,而是名字为_IO_FILE_plus结构体,这个结构体包含了_IO_FILE结构体,还包含了一个虚函数表指针,其定义为:

\

这个结构体里面的_IO_jump_t指针类似于C++中的虚函数表,而其结构中具体虚函数名称定义如下:

\

二者之间的整个关系结构图如下:

\

二、利用原理

我们平常在应用程序中调用fclose、fputs这些函数的时候系统最终都会通过_IO_jump_t这个函数表指针对函数进行调用(如fclose会调用close函数等)。

在知道了这一点后,试想如果我们想办法利用其他各种溢出方式覆了应用程序的文件指针,使其指向我们可控区域,在该区域伪造相应的_IO_FILE_plus头(主要是_IO_jump_t表或者是表中函数的指针),最终在程序调用fclose函数或其它函数的时候,就可以控制程序去执行我们想要它执行的地址,control the eip, control the world。

比较常见的是利用strcpy,strcat等覆盖了文件指针然后进一步利用,下面会举两个例子来进一步理解如何实现,一个是利用UAF来覆盖修改指针,一个是利用strcpy栈溢出。

网络安全之溢出利用FILE结构体
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/diannao/wangluo/596130.html

标签分类:

上一篇:上一篇:CSP进阶-302 Bypass CSP
下一篇: 下一篇:没有了
无觅关联推荐,快速提升流量