목록전체 글 (48)
rsp-∞

스테가노그라피 형식의 문제이다. jpg 파일이 주어져서 이를 다운받고 이전에 풀었던 스테가노그라피와 마찬가지로 HxD를 통해 파일을 열어 보았다. 이전처럼 파일의 헤더 시그니처와 푸터 시그니처가 변조된 것은 아니어서, 일단 혹시 몰라 속성을 확인해 보았다. 그런데 파일의 크기가 1MB로 조금 큰 것 같아서, 혹시 이 파일이 다른 파일과 압축되어 있는 것인가 싶어 HxD의 찾기 기능으로 PK를 검색해 보았다. 여기서 PK는 압축 파일의 시그니처이다. 검색해 보니 PK가 실제로 존재하고 있었다. 이것을 추출해 보자. 나는 우분투에서 steghide 툴을 다운받아 사용했다.$ steghide extract -sf challenge1.jpgEnter passphrase: passphrase를 입력하도록 되어 있..

버퍼 오버플로우 취약점이 존재하는 문제임을 알 수 있다. 문제 파일을 다운받으면 도커 파일과 cat, flag라는 이름의 텍스트 파일, bof라는 바이너리 파일이 존재한다. 도커 파일을 열어 보자.FROM ubuntu:22.04@sha256:2b7412e6465c3c7fc5bb21d3e6f1917c167358449fecac8176c6e496e5c1f05fENV user bofENV chall_port 31337RUN apt-get updateRUN apt-get -y install socatRUN adduser $userADD ./deploy/flag /home/$user/flagADD ./deploy/$user /home/$user/$userADD ./deploy/cat /home/$user/catRU..

해당 문제의 C 파일을 열어 어떻게 동작하는지 살펴보자.#include #include #include #include #include #define FLAG_SIZE 0x45void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0);}int main(int argc, char *argv[]) { int len; char * fake_flag_addr; char buf[0x20]; int fd; char * real_flag_addr; initialize(); fd = open("./flag", O_RDONLY); len = FLAG_SIZE; fake..