pwnable.kr 4.flag
리버싱에 관련있는 거 같은데
문제에서 하라는 대로 다운을 받았다.
다운 받은 파일에 대해 궁금하니 ls -al
해당 파일을 실행파일로 바꿔보자
chmod +x flag
실행파일로 바꾼 flag파일을 실행시켜보자
I will malloc() and strcpy the flag there. take it.
=> malloc,strcpy, flag를 그곳에 둘것이니 가져가시오.
이것으로 본다면 flag는 c언어로 작성된 파일이라는 것을 알 수 있다.
gdb로 flag 파일을 디버깅 하려했더니
No debugging symbols found in flag
=> 가능성 1. 파일 손상 2. 암호화 되어있어 읽지 못함
flag파일을 윈도우로 가져와서 freeware을 돌려보았다.
맨아래 unpack info에서 detected UPX! PACKER 이 문구로 보아 UPX 패킹으로 인해 어셈블리 코드를
읽어내지 못했던 것이였다.
UPX 패킹을 풀어보자.
UPX설치를 위해 내가 따라 했던 사이트.
zoomadmin.com/HowToInstall/UbuntuPackage/upx
STEP1까지 따라하다가 안되서 뻘짓하다가 이상한거 다운받았다.
https://github.com/upx/upx/releases
결국 여기가서 직접 다운받음...
다운 받고 압축 푸는 거 잊지 말긔
flag 파일 mv 명령어로 upx 파일 안에 넣어주구~
terminal에서 해당 파일의 위치로 가서 ./upx flag 해주면 upx패킹이 풀린다. (언패킹)
자 다시,
gdb로 파일을 분석해보자.
gdb flag해주고
disas main이라 쳐주면, => main 분석
드디어 어셈블리코드!!!
flag파일의 주소는 0x6c2070
flag를 알아내었다.
답은 flag: UPX...? sounds like a delivery service :)