[pwnable.kr] flag (7 pts) :: Write-Up

두비니

·

2019. 11. 10. 09:16

 

 

 

 

Papa brought me a packed present! let's open it.

Download : http://pwnable.kr/bin/flag

This is reversing task. all you need is binary

 

 

 

리버싱 문제라고 하네요.

 

 

일단 파일을 받아서 까봅시다.

 

malloc한후 그곳에 flag를 넣어놓는다고 하네요.

 

 

gdb로는 얻어지는게 없으니 아이다로 봅시다.

 

근데 아이다로 열어보니까 수상합니다. 함수도 얻어지는게 없고, 어셈블리어 코드를 봐도 이상한게 너무 많네요.

 

 

 이 문제를 풀면서 공부한 것이 꽤 있는데, 일단 reversing문제로 접근할 때는, 어떤 언어로 작성되어있는지, packing이 되어있는지 여부를 보는 것이 중요하다는 것을 알게되었습니다.

 

따라서 언어 확인과 packing여부를 위해 exeinfo를 사용했습니다.

 

보니 upx packing이 되어있다는 점을 알수있고, 보면 unpack하는 방법도 친절히 설명해주고 있네요.

 

 

참고로 어셈을 계속 내려가다보면 이렇게 뜹니다. 이런방법도 있다고~

 

 

참고로 upx언패킹하는 방법은 

https://xn--z92bu70c.kr/56

이분 본문을 참고해주면 좋을 것 같습니다. 참고로 저는 한참해맸습니다ㅎ.

 

언패킹을 한 후 다시 확인을 해 주면,

 

 

이렇게 대놓고 flag의 주소를 알려주고있습니다. 0x6c2070이 맨 처음에 파일을 실행시켰을 때 strcpy해놨다는 곳인가봐요.

 

 

 

끝! 참고로 x/xw가아닌 x/xg를 쓰는 이유는 이 파일이 64bit실행파일이기 때문입니다.

 

 

 

UPX...? sounds like a delivery service :)