PWN-FMT - ZhouYetao

PWN-FMT

pwn-fmt

introduction & how2use

introduction

一般在编写c/c++程序的过程中,很多时候都会用到printf()这个函数,一般标准的写法是printf("%%",),但是有时候偷懒的会写成printf(*),这就会造成一个叫格式化字符串的漏洞。

fmt string

格式化字符串的格式

%[parameter][flags][field width][.precision][length]type

how2use

这边给出一个test:

#include<stdio.h>
void main()
{
    setvbuf(stdout , 0 , _IONBF , 0);
    char a[50];
    while(1)
    {
        printf("input:");
        gets(a);
        printf("output:");
        printf(a);
        printf("\n\n");
    }
}

makefile:

test:test.c
    gcc -g -o test test.c

运行结果:
abe80083b3da8f520f75b53e49c49a0.png

这边发现正常的输入输出是可以实现的,但是当你输入的是一个格式化字符串的时候,就会有一些意想不到的东西出来。这样就可以利用格式化字符串这个漏洞来leak出一些东西,包括canary还有一些别的address,这个在后续的leak memory还有一些hijack中会用到。

leak memory

Leave a Comment

@author:ZhouYetao
© 2020 Copyright.  | Power by Mijiu                                                                                               
本站已安全运行 825 天