우선 문제를 확인해보면 특정 Host에 ping 패킷을 보내는 서비스라고 한다. 본격적으로 문제 파일을 다운로드 받아서 해결해보자
문제 파일을 다운로드 받아서 압축 파일을 해보면 아래와 같이 html 파일 4개가 있는 것을 볼 수 있었다.
이 파일들을 모두 열어봤는데 내 노트북이 이상한건지, 리눅스 환경에서 해야하는지 모르겠지만 난 아무리 구글링을 해봐도 파일이 너무 이상한 상태로 열렸다.
아래 이미지와 같이 정상적인 페이지가 나오지 않았다...
혹시나해서 크롬, 엣지, 웨일 이 3가지 브라우저에서 다 해봤는데 정상적인 화면은 전혀 나오지 않았다...
리눅스에서도 시도해봤으나, 계속 네트워크 연결 오류의 문제로 파일을 열 수 없었다. 여러 오류 끝에.... 우선 지금은 구글링해서 풀이를 상세히 적는걸로 하고 나중에 리눅스에서 다시 시도해봐야겠다.
▶ 위 사진 중 오른쪽 사진 빈칸에 8.8.8.8을 입력하고 Ping!을 클릭했을 때, 아무 일도 발생하지 않고, 구글링해서 나온 값을 넣었을 때는 '요청한 형식과 일치시키세요'와 같은 문구가 떴다. 혹시 몰라서 버프스위트도 설치하고 입력값을 넣어봤는데 계속 같은 현상이 발생했다.
(앞으로 나오는 실습 화면은 다른 분의 화면이고 가장 마지막에 출처를 기재하려 한다.)
input에 ip 주소를 넣으면 서버가 ping을 보내주는 것으로 확인할 수 있다.
input에 8.8.8.8를 넣어서 Ping! 버튼을 클릭하니 오른쪽 화면과 같은 결과를 얻을 수 있다고 한다. 또한, 해당 문제는 다중 명령어를 이용한 취약점을 물어보기 위한 문제이다.
먼저 알 수 있는 것은 pattern 속성으로 인해 추가적인 명령어 또는 특수문자가 제한된다는 점이다. 따라서 pattern 속성의 기능을 없애면 된다. 이렇게 pattern 속성을 지웠다면 flag를 읽을 때, "cat" 명령어를 활용하여 없앨 수 있다.
하지만 cat flag.py만 입력한다고 해서 되는 문제는 아니고, ping 패킷을 보내는 서비스를 이용하여 추가적인 명령어를 입력할 필요가 있다.
- ; : 성공 여부와 상관없이 다음 명령어 실행
- && : 성공한 경우에 다음 명령어 실행
또한, 소스코드를 확인해보면 ping -c 3은 큰따옴표로 둘러싸여있지 않고 해당 명령어에만 둘러싸여져 있는 것을 확인할 수 있어 이를 응용하면 문제를 해결할 수 있을 것 처럼 보인다.
따라서, pattern 속성을 지우고 8.8.8.8"; cat "flag.y 또는 8.8.8.8"&& cat "flag.py 를 입력할 수 있다. 그 중 하나를 입력해보면 아래와 같이 플래그 값을 발견할 수 있었다.
앞에서 언급했듯이, 나는 정상적인 화면이 나오지 않았기 때문에 다음에 제대로된 실습을 진행하고 문제 해결 플래그값 입력을 위해 따로 드림핵 사이트에 있는 flag 입력칸에 넣지는 않았다.
[참고자료]
'CTF' 카테고리의 다른 글
[Dreamhack] session (0) | 2023.04.12 |
---|---|
[Dreamhack] image-storage (0) | 2023.04.12 |
[Dreamhack] devtools-sources (0) | 2023.04.01 |
[Dreamhack] Carve Party (0) | 2023.03.31 |
[Webhacking.kr] old-20 write-up (0) | 2023.03.29 |