'Wargame/ch4n3 world'에 해당되는 글 1건

예전에 우연찮게 접했던 어느 고등학생분이 만든 워게임 사이튼데 재밌게 문제 풀다가 막혔던 웹 문제하나가 있었는데 ctf랑 딴 워게임들 풀다가 갑자기 영감이 떠올라서 다시 풀어보게 됬다.

 

들어가보면 아래와 같이 로그인 기능이랑 계정 등록 기능, 패스워드 찾기 기능 정도가 있다.

여기서 아무계정이나 하나 만들어서 들어가면 메일 보내기 관련 기능이 몇개 있는데 SQLi나 XSS로 admin 세션 따보려고 했는데 딱히 먹히는게 없었다. 그 중에 Members 기능에 접근하면 admin이 아니라 접근이 안됬었다.

 

 

 

 

어찌됫든 admin으로 로그인을 해야 될 것 같았는데 SQLi로 비밀번호를 딸 수 있는 상황도 아니었고 XSS도 필터링이 빡세게 되있어서 먹히지가 않았다. 그래서 가입할때 애초에 admin으로 가입을 해봐야 겠다고 생각했다. 근데이미 admin계정이 있었기 때문에 admin                                        1으런 식으로 가입해주면 admin으로 로그인이 가능했고 Members 메뉴에 접근할 수 있었다.

 

들어가보면 다음과 같이 멤버에 대한 정보를 조회하는 기능이 있었다.

 

 

 

일단 조회를 해보니 다음과 같이 특정 url을 파라미터로 넘기고 있었고 응답값으로 계정 정보가 출력되는 걸 볼 수 있었는데 이 때 파라미터로 날라가는 url에 직접접근해보면 다음과 같이 xml파일 정보를 받아오는걸 확인할 수 있었다. 

 

 

 

일단 xxe인건 알겠고 여기서 url로 넘기는 값을 내 서버로 땡겨서 시도를 해봤는데 애초에 내 서버로 접근조차 안되는거 보니 요청 url정보에 대한 입력값 검증이 이루어 이루어지고 있는 것 같았다. 그래서 원래 서버로 xml내용을 요청할 때 응답값을 내가 원하는 형태로 조작할 수 있나 생각해봤고 search파라미터에서 SQLi가 터지는걸 볼 수 있었다.

 

 

여기서 SQLi를 통해서 xxe를 터트릴려고 했더니 위에처럼 내가 조작할 수 있는 영역이 External Entity를 박아넣을 수 없는 영역이었다. 여기서 xxe가 아닌가하고 디비에 뭔가 들어있나하고 디비정보를 다 털었는데 별다른 수확이 없었다.

 

여기까지가 이전에 문제를 풀었을 때인데 여기서 도저히 영감이 안떠올라서 나중에 풀어야겠다 하고 넘어갔었다. 근데 불현듯 왜 그때 인코딩 값을 안건드려봤지라고 생각이 들었고 다시 들어와서 인코딩값부분에 특정값을 넣어봤더니 요청한 xml에 내 인코딩 파라미터값이 넘어가고있는걸 확인할 수 있었다.

  

 

왜 그 땐 이부분을 간과하고 그냥 넘어갔을까. 웹 해킹하면서 요새 많이 느끼는건데 어느정도 공부 좀 했다고 내 지식선에서 100퍼를 단정짓고 이건 아니다 이런 고정관념에 사로잡히면 안되겠다 라는 생각을 많이 한다.

 

어쨋든 external entity를 선언할 수 있는 시점에서 이미 문제는 끝난거나 마찬가지였고 바로 index.php를 읽어오기위해서 구문을 짰다. 

 

 

요런식의 xml문서를 만들어서 보내면 되겠다고 생각했고 그대로 url파라미터에 값을 담아서 넘겨봤다. (url인코딩해서 넘겨줬음)

 

 

해당 코드를 디코딩해서 봤는데 flag가 없었다.

 

 

 

웹 루트 index.php에 플래그가 있다했는데 현재디렉토리의 index.php가 웹루트 디렉토리가 아닌 것 같았고 ../index.php로 다시 시도해봤다.

 

 

 

플래그가 들어있었고 잘 나왔당.

 

 

 

 

 

 

 

 

블로그 이미지

JeonYoungSin

메모 기록용 공간

,