house of botcake利用模板+爆破stdout泄露地址 glibc2.31

本文详细解析了一道名为House of Botcake的PWN题目,通过构造特定的数据结构漏洞来实现任意代码执行。文章展示了如何利用gdb进行调试,并通过精心构造payload来泄露libc基地址,最终调用system函数执行/bin/sh命令。
from pwn import *
context.update(os='linux',arch='amd64',log_level='debug')
#c=remote(b'node4.buuoj.cn',25937)
# c=process(b'./pwn1')
libc=ELF(b'/pwn/libc')


#def dbg():
#	gdb.attach(c,'''


#	b *$rebase(0x14a1)
#	b *$rebase(0x14f9)
#	b *$rebase(0x15d7)
#	b *$rebase(0x1684)
#
#
#	''')
def dbg():
    gdb.attach(c)
    pause()


def add(size,content):
	c.sendlineafter(b'choice : ',b'1')
	c.sendafter(b'Size: ',str(size))
	c.sendafter(b'Content: ',content)
	
	
	
	
def</
`freopen("/dev/ttyS0", "r+", stdout);` 和 `freopen("/dev/console", "r+", stdout);` 都是用来重定向标准输入输出流的语句,但它们指向的设备不同,用途和行为也有区别。 ### 1. `freopen("/dev/ttyS0", "r+", stdout);` - **含义**:将标准输出(`stdout`)重定向到串口设备 `/dev/ttyS0`,同时也以读写方式打开该设备。 - **用途**:通常用于嵌入式系统或服务器环境中,通过串口进行调试或输出日志。 - **行为**:程序的输出会通过串口发送出去,可以被连接到串口的终端或调试工具接收。 - **特点**:ttyS0 是串口终端设备,通常用于远程控制或调试,需要串口连接工具(如 minicom、PuTTY)来查看输出。 ### 2. `freopen("/dev/console", "r+", stdout);` - **含义**:将标准输出重定向到系统控制台 `/dev/console`。 - **用途**:用于将输出发送到系统主控制台(通常是直接连接到显示器和键盘的终端)。 - **行为**:程序的输出会显示在系统主控制台上。 - **特点**:/dev/console 是系统默认的控制台设备,通常用于系统启动、内核日志输出等关键信息的显示。 ### 区别总结: | 项目 | `/dev/ttyS0` | `/dev/console` | |------|---------------|----------------| | 设备类型 | 串口终端设备 | 系统主控制台设备 | | 常见用途 | 远程调试、串口通信 | 显示系统启动信息、内核日志 | | 输出目标 | 串口连接的终端 | 本地显示器 | | 是否需要串口工具 | 是 | 否 | ### 示例: ```c #include <stdio.h> int main() { // 重定向输出到串口 freopen("/dev/ttyS0", "r+", stdout); printf("This message is sent via serial port.\n"); // 重定向输出到系统控制台 freopen("/dev/console", "r+", stdout); printf("This message is displayed on the console.\n"); return 0; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值