第二部分:Linux格式字符利用
首先感谢大家阅读我们的Linux漏洞利用教程系列的第一部分。同时再次感谢Kyuzo花时间与我们分享他的知识!在这一部分中,我们将再次讨论格式字符串的开发利用。格式字符串的漏洞通常发生在程序员想要打印出用户控制的函数,但不清楚用户输入,从而允许恶意攻击者注入自己的格式说明符。这反过来又允许恶意攻击者读写任意内存。
在我自学格式字符串利用基础知识的过程中,我阅读了两个优秀的资源:(1)利用格式字符串漏洞【scut/team Teso - 2001】和(2)格式字符串利用的进展【gera&riq/Phrack - 2002】。我在下面列举了这两种资源的链接,并强烈推荐它们作为背景阅读。
在讲好东西之前,我想提一下默认情况下,gdb 不能操作AT&T语法中的汇编码,对于我们这些已经完成了Windows开发利用的人来说,这有点令人困惑。幸运的时,你可以使用以下命令轻松改变这种状况。
set disassembly-flavor intel
set disassembly-flavor att
资源:
利用格式字符串漏洞(通过scut): 链接
格式字符串利用的进展(通过gera&riq):链接
介绍:
几个月前,b33f和我一起组织额一个关于软件开发的研讨会,将在大学活动中展示。研讨会有两个主要思想:(1)处理非缓冲区溢出漏洞利用;(2)讨论Windows和Linux。因此,我列出一系列不是特别迷人但却更深奥的漏洞列表(!)其中我们就包含有格式字符串,因为在过去几年里,就Linux而言,格式字符串非常重要。举其中一例,在2012年初发布的sudo,在sudo_debug函数中存在格式字符串缺陷,该缺陷随着Fedora和OpenSUSE等主流发行版一起发布。
研讨会结束后,我答应b33f将会为FuzzySecurity贡献一些材料,几个月后,我终于下定决心制作一些关于格式字符串利用的视频。
视频教程第一部分中使用的示例代码:
/* example.c
*
* $ gcc -o example example.c
* $ execstack -s example # make stack executable
*/
#include <stdio.h>
int main() {
int a = -5;
float b = 5.5;
char *c = "My String";
printf("A = %d, B = %f, C = %s\n", a, b, c);
}
视频教程的第一部分和第二部分使用的示例代码:
/* fmt.c - sample program vulnerable to format string exploitation
*
* $ gcc -o fmt fmt.c
* $ execstack -s fmt # make stack executable
*/
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char b[128];
strcpy(b, argv[1]);
printf(b);
printf("\n");
}
格式字符串漏洞利用教程:
第一个视频介绍了什么是格式字符串,以及它们如何导致信息泄露(一些主题包括:转换说明符用法和直接参数访问)。
第二部分向前推进了一步,展示了如何利用神秘的格式字符串功能的程序,例如神秘的%n转换说明符!
视频转移到网盘:568K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4N6p5k6c8d9$3k6V1j5K6g2s2e0i4W2q4i4K6u0V1e0h3#2V1f1o6S2I4g2f1u0%4 提取码:92wz
原文链接:73bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3k6#2P5Y4A6&6M7$3g2U0N6i4u0A6N6s2W2Q4x3X3g2U0L8$3#2Q4x3V1k6@1N6i4c8G2M7X3W2S2L8s2y4Q4x3V1k6W2P5s2m8p5k6i4k6Q4x3V1j5I4x3q4)9J5k6h3S2@1L8h3H3`.
最后于 2019-5-27 12:54
被Liary编辑
,原因: