선행 지식:
upx의 개념
선행 다운로드: 외부에서 다운받는 실행파일은 항상 리눅스 가상머신 환경에서 열어볼 것이다
리눅스에 파이썬과 upx이 설치되어있는지 확인해야 한다
메인함수는 패킹되었기 때문에 보이지 않고 start 지점만 보인다 (동적분석도 당연히 안 된다)
hexdump로 보니까 upx를 통해 패킹됐다는 것을 알 수 있다
./upx명령어를 실행할 수 있게끔 패킹된 파일을(unpackme) upx디렉토리 하위에 옮겨준다
참고로 저는 다운받은 파일 이름명칭을 제마음대로 바꿉니다! 타자치기도 간편하고 직관적으로 이해하기 쉽도록 하려구요
리눅스에 UPX를 깔고 -d 옵션을 줘서 패킹을 풀어준다
패킹을 풀어주고 IDA에 올리면 이젠 main을 찾을 수 있다
main 함수 중 핵심이 되어보이는 부분을 가져왔다 (추측)
if 문이 답과 연관이 깊은 것 같다 특히 비교하려는 754635가(추측)
밑에 있는 함수는 디컴파일로 분석해보려해도 난독화가 되어있는 것처럼 복잡해 보여 동적분석을 하기로 한다
수상한 숫자를 넣어보니 정답이 바로 나온다..
매우 간단해서 놀람
이 문제를 풀면서 얻은 점:
1. IDA로 풀다가 막히면 gdb, gdb로 풀다가 막히면 IDA
맨 처음 파일을 받으면 IDA로 열어서 대강 main함수를 파악해보고, gdb로 동적분석을 하는 방향으로 가면 굿 훨씬 수월하게 플래그를 찾을 수 있을 것 같다.
2. 대회별 플래그가 나오는 방식이 상이하니 센스로 알아차리는 게 .. 센스가 있어야 하는 게 ....
'보안 > ctf 풀이' 카테고리의 다른 글
[암호] 드림핵 basic-crypto1 문제풀이과정 (0) | 2023.01.02 |
---|---|
picoCTF GDB Test Drive (2) | 2022.12.29 |
[리버싱] picoCTF unpackme.py (0) | 2022.12.28 |
[리버싱] picoCTF Transformation (0) | 2022.12.26 |
[리버싱] 드림핵 rev-basic-1번 문제 풀이과정 (0) | 2022.12.25 |
댓글