NOT4DOG
방명록 RSS 태그 글쓰기 관리자
 
[CTF] Dreamhack crawling 문제 Write-up
CTF Write-up 2022-01-14 20:56:05

반응형

문제) 해당 문제는 Dreamhack CTF Season 1 Round #12에 출제된 문제입니다.

          드림이는 웹 크롤링 사이트를 구축했습니다.
          크롤링 사이트에서 취약점을 찾고 flag를 획득하세요!

 

문제와 함께 Dockerfile과 app.py 파일을 제공한다.

우선 메인 페이지에 접속해 내 블로그 주소를 입력하니 정상적인 크롤링이 되는것을 확인할 수 있다.

크롤링 작동 화면

 

이번에 Dockerfile과 app.py를 열어보았다.

app.py Code

빨간색 부분은 공인 아이피만 입력이 가능하게끔 작성 되어있다.

 

노란색 부분은 입력값을 검사하는 부분인데, IP 주소값이 0.0.0.0인 경우 false 반환,

사설 IP인 경우 "Can you access my admin page~?" 문자열을 반환하고,

HTTP Referer를 검사해 localhost 이거나 127.0.0.1일 경우에도 false를 반환한다.

 

초록색 부분은 FLAG를 출력하는 부분인데 127.0.0.1 즉, localhost 가 입력값으로 주어진 경우에만

FLAG를 출력해준다. 또한 아래쪽에 작성된 코드를 보면 Port Number가 3333일 경우에만 작동한다.

 

localhost ip 접근 불가

 

localhost 문자열 접근 불가

 

이를 우회할 방법을 생각하다가, 입력값 검사 시 HTTP Referrer를 검사한다는 것을 알았다.

참조 주소만 검사하기에 실제 주소를 단축링크 등으로 감싸 입력하면 검사를 우회할 수 있다.

링크 단축 서비스 사용
단축된 링크 복사

 

FLAG가 나올줄 알았는데 나오지 않아 app.py를 다시 살펴보던 중,

localhost의 루트(/)에는 index.html (서버의 기본 페이지)만 있고,

FLAG는 /admin에 존재한다는 것을 확인하여, http://localhost:3333/admin 으로 다시 진행했다.

FLAG 획득

 

반응형