문제
풀이
프로그램을 실행하자 등록키가 보이길래 제작사의 실수 인줄 알고 클릭했더니 잘못된 키였습니다.
올리디버거를 이용해서 열어보니
이상한 문구가 떴습니다. 그래서 무시하고 갔더니
이렇게 정상적으로 열리는 것을 확인 할 수 있었습니다.
먼저 저는 저번 글에서 썼는 api 확인을 했습니다.
뭔가가 이상한걸 볼 수 있습니다. 그래서 저는 2번과 비슷한 문제 인줄 알고 HXD로 열어 봤습니다.
그랬더니 UPX 패킹이 되었다고 뜨는 것을 볼 수 있었습니다.
※패킹이란?
패킹은 실행압축이라는 뜻을 가진다.
일반적으로 ZIP, RAR과 같은 압축은 그 압축을 해제 시켜야 해당 프로그램을 실행시킬 수 있다.
하지만 패킹은 있는 그대로 일반 프로그램처럼 실행 가능하다.실행파일을 대상으로 파일 내부에 압축해제코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제 시킨 후 실행시키는 기술이다.다시 말하면 압축을 푸는 과정없이 바로 프로그램을 실행할 수 있는 것을 실행압축이라고 한다.
저희는 UPX 패킹을 풀기위해 2가지 방법을 할 수 있습니다.
1. upx 언패킹 툴 쓰기
2. 직접 언패킹 하기
구글에 검색하면 바로 나오니 검색해서 받아주세요.
1
upx를 실행해보면 저렇게 뜹니다.
upx 언패킹 하는법
upx.exe [대상 파일] -d -k (d = decompess(압축 해제) , k = keep backup files(백업파일 남겨놓기)
바로 풀린것을 확인 할 수 있습니다.
이제 3번 문제에서 썼던 Text를 확인하는 옵션을 이용해서
아이디랑 비밀 번호가 나오는 것을 확인 해볼수 있습니다.
2
직접 덤프를 떠서 복구 하는 방법이다.
실행을 시켜서 쭉내리다 보면 JMP 시키는 부분이 보일텐데 여기에 bp를 해줍시다.
그후 F9를 눌러주면 저부분에서 멈춥니다 그후 f8을 눌러봅시다.
그 후 dump debugged process를 눌러 줍시다. (이건 플러그인이다 구글 검색후 다운을 합시다)
rebuid import 가 체크되어 있으면 체크를 풀고 dump를 해줍시다.
파일이름이랑 위치를 저장하는 곳이 나오는데 05dump.exe로 저장을 해줍니다.
그후 덤프된 파일을 실행 해보면
이렇게 뜨는데 그 이유는 import address table(IAT)이 깨졌기 때문입니다.
※IAT 란?
IAT는 프로그램에서 사용되는 라이브러리에서 어떠한 함수들을 사용하고 있는지 함수명,함수시작 주소 등에 대한 정보를 기술한 테이블 입니다.
우리는 lord pe라는 프로그램을 써서 복구 할 수 있습니다.
순식간에 복구 되었습니다. 이후는 아까 전과 같으므로 생략하겠습니다.
내가 생각한 출제의 의도 : 패킹에 대하여
'리버싱에 관하여 > ctf' 카테고리의 다른 글
pico CTF sidechannel writeup[side channel attack에 관하여] (0) | 2023.06.04 |
---|---|
Codeengn<Basic RCE L04> (0) | 2020.09.07 |
CodeEngn <Basic RCE L03> (0) | 2020.09.07 |
CodeEngn <Basic RCE L02> (0) | 2020.09.06 |
CodeEngn <Basic RCE L01> (0) | 2020.09.06 |