stack37-38

小白一只,有错误的地方还请各位师傅指正。

Stack37(32位)

每天下午抖音(47253061271)直播刷pwn题,欢迎各位师傅讨论

反汇编

在这里刷新了标准输入输出流,将缓冲模式设置为_IONBF,不经过缓冲区。

补充:

    setvbuf 是一个 C标准库函数,用于控制输出流的缓冲行为。它允许你设置流的缓冲方式、缓冲区的大小,以及是否使用自定义缓冲区。这个函数可以用于 stdin、stdout 或 stderr 等标准输入输出流,也可以用于其他文件流。

 

函数原型

 

int setvbuf(FILE *stream, char *buffer, int mode, size_t size);

 

    1

 

参数说明:

 

    stream:

        这是一个指向 FILE 类型的指针,表示需要设置缓冲区的流。常见的值有:

            stdout:标准输出流

            stdin:标准输入流

            stderr:标准错误流

            也可以是其他打开的文件流(通过 fopen 等函数获得)。

    buffer:

        这是一个字符数组指针,指向你希望用于缓冲的自定义缓冲区。如果传入 NULL,库函数将自动为该流分配缓冲区。

    mode:

        缓冲模式,用于指定缓冲区的工作方式。常见的缓冲模式有:

            _IOFBF:全缓冲模式(Fully Buffered)。数据会被缓存在内存中,直到缓冲区满或者程序结束时才会写入目标设备。

            _IOLBF:行缓冲模式(Line Buffered)。每当遇到换行符时,缓冲区会自动刷新,将内容写入目标设备。

            _IONBF:无缓冲模式(No Buffering)。数据会立即写入设备,不使用任何缓冲区。

    size:

        指定缓冲区的大小(以字节为单位)。在全缓冲模式和行缓冲模式下,数据会被暂存于这个大小的缓冲区中。无缓冲模式下,这个参数被忽略。

 

返回值:

 

    如果设置成功,setvbuf 返回 0。

    如果出现错误(如无效的流或不允许的缓冲区大小),则返回非零值。                        

原文链接:C_C++:setvbuf()函数详解-CSDN博客

发现有溢出,可以写入14字节,但是可以读入0x32字节,距离栈底0x12

 

后门函数

总体思路,可以通过溢出,将ret地址覆盖为后门函数地址

Exp:

Stack38

64位:

只是改为64位的elf文件,只需要加上ret,其他的和32位相同。

Exp:

补:from exp import *这里的exp是自己写的针对pwn题模版的py文件

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值