-
[pwnable.kr][Toddler's Bottle] 4. flagWargame/pwnable.kr 2019. 7. 18. 01:25
이번 문제는 리버싱 문제이다.
wget로 문제에 나온 flag 파일을 다운받는다.
바이너리 파일이기 때문에 cat 명령어로는 파일을 열람할 수 없다. 그래서 바이너리 파일을 열람할 수 있게 해주는 xdd 명령어로 파일을 열람해보았다.
xxd flag | less
이번엔 바이너리 파일에서 문자열만 추출해서 보여주는 strings 명령어로 flag 파일을 확인해보았다.
확인 결과 flag 파일이 UPX로 패킹되어 있다는 것을 알 수 있었다.
flag 파일을 UPX로 언패킹 해보았다.
언패킹한 flag 파일을 실행해본 결과 아래와 같은 문구가 출력되었다.
(처음에는 파일에 실행 권한이 없으므로 chmod로 실행 권한을 부여한다.)
출력된 문구에는 malloc( )을 하고 flag를 strcpy하겠다고 쓰여있다. 그래서 IDA로 언패킹한 flag 파일을 열어보았다.
main 함수를 디컴파일하여 main 함수의 소스코드를 확인해보았다. (Hex-Ray의 단축키인 F5를 누르면 함수 단위로 디컴파일된다.)
puts 함수로 "I will malloc( ) and strcpy the flag there. take it." 문구를 출력하고, malloc 함수로 메모리 공간을 할당한 후 그 공간에 flag를 복사한 것을 알 수 있다.
복사되는 flag를 쭉 따라가본 결과, flag를 확인할 수 있었다.
최종 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