-
[pwnable.kr][Toddler's Bottle] 4. flagWargame/pwnable.kr 2019. 7. 18. 01:25
이번 문제는 리버싱 문제이다.
Toddler's Bottle - flag wget로 문제에 나온 flag 파일을 다운받는다.
바이너리 파일이기 때문에 cat 명령어로는 파일을 열람할 수 없다. 그래서 바이너리 파일을 열람할 수 있게 해주는 xdd 명령어로 파일을 열람해보았다.
xxd flag | less
이번엔 바이너리 파일에서 문자열만 추출해서 보여주는 strings 명령어로 flag 파일을 확인해보았다.
확인 결과 flag 파일이 UPX로 패킹되어 있다는 것을 알 수 있었다.
strings flag flag 파일을 UPX로 언패킹 해보았다.
flag 언패킹 언패킹한 flag 파일을 실행해본 결과 아래와 같은 문구가 출력되었다.
(처음에는 파일에 실행 권한이 없으므로 chmod로 실행 권한을 부여한다.)
flag_unpack 실행 출력된 문구에는 malloc( )을 하고 flag를 strcpy하겠다고 쓰여있다. 그래서 IDA로 언패킹한 flag 파일을 열어보았다.
main 함수를 디컴파일하여 main 함수의 소스코드를 확인해보았다. (Hex-Ray의 단축키인 F5를 누르면 함수 단위로 디컴파일된다.)
flag의 main 함수 puts 함수로 "I will malloc( ) and strcpy the flag there. take it." 문구를 출력하고, malloc 함수로 메모리 공간을 할당한 후 그 공간에 flag를 복사한 것을 알 수 있다.
복사되는 flag를 쭉 따라가본 결과, flag를 확인할 수 있었다.
flag flag - aUpxSoundsLikeA 최종 flag: UPX...? sounds like a delivery service :)
[참고 자료]
IDA 사용법: http://dakuo.egloos.com/v/1111657
IDA의 Hex-Ray 플러그인 연동: https://dakuo.tistory.com/30
'Wargame > pwnable.kr' 카테고리의 다른 글
[pwnable.kr][Toddler's Bottle] 6. random (0) 2019.07.26 [pwnable.kr][Toddler's Bottle] 5. passcode (0) 2019.07.19 [pwnable.kr][Toddler's Bottle] 3. bof (0) 2019.07.17 [pwnable.kr][Toddler's Bottle] 2. collision (0) 2019.07.16 [pwnable.kr][Toddler's Bottle] 1. fd (0) 2019.07.15