1. Description
2. Check
2.1 checksec
2.2 file
2.3 excute
3. Analysis
3.1 gdb
main + 8 ~ 13
+8에서 함수 호출 순서에 따라, edi의 값이 "I will ~~. take it."임을 알 수 있다.
+13에서 puts로 출력
main + 18 ~ 23
malloc을 해서 동적할당을 한다.
main + 32
여기서 rip+0x2c0ee5를 쓰는데, 이 부분에서 "이 문제는 동적 분석 문제"임을 알 수 있었다.
main + 49
call 0x400320 을 하는 것으로 보아, 이 부분이 핵심임을 추측할 수 있었다.
3.2 danamic analysis
3.2.1 rip + 0x2c0ee5
flag의 값이 rdx에 저장되므로
flag가 "UPX...? sounds like a delivery service :)" 임을 추측해 볼 수 있다.
3.2.2 call 0x400320
아! 이 0x400320이라는 함수는 strcpy로 추측해 볼 수 있다.
4. result
결론은, main+32에서의 상대주소를 통해 flag를 읽어 들이고,
main+49에서 strcpy를 호출해, 어딘가에 flag를 쓰는 것임을 알 수 있다.
예전에 풀었던 문제라 이렇게 나왔다.
결국, 이 문제는 리버싱을 할 수 있는지 테스트하는 문제인 것 같다.