2014 홀리실드 참여한 후 제가 푼 문제만 적어봅니다.

주최측에서 서버를 다시 열어주지 않아 텍스트로만 접근하는 여러분은 상당히 재미가 없겠네요.

문제에 게싱도 많았고 억지도 있었지만 운영한 사람들 고생을 생각하면 마냥 욕할수는 없는 노릇입니다.

여튼, 대회는 끝이났으니 후에 이 문서를 보고 공부하실 분이 계실까 하여 제가 적은 라이트업만 공개합니다.





2014 holyshield write up


1. Find out (100)

해당 문제에 접속하게 되면 html형식으로 단지 정보만 뿌려주는 홈페이지로 접속할수 있게 되고, 검색창이 하나 있다.

검색창에서의 sql인젝션 등은 작동하지 않으며 페이지를 살펴보면 기존에 있던 글을 긁어와서 사용했지만 약간 다른점을 몇몇 발견 할 수 있고

그것들과 힌트를 토대로 어떤 페이지에 들어가게 되면 메인 페이지와 똑같이 생긴 페이지에 접근할 수 있지만, 이 페이지에는 PUT 메소드가 허용되어 있고 

html에 숨겨져 있는 텍스트 파일에 접근하게 되면 /hide/userteamname.txt에 leader email을 적어서 올리라는 내용이 있었다.

/hide 라고 적혀 있어서 최상위 경로에 업로드 했지만 40분동안 실패

결국 알고보니 찾아들어간 페이지에서 hide 폴더에 업로드 해야 하는문제였다.

(payload : PUT http://~ /hide/team.txt


email@here.com)

절대경로와 상대경로를 구분해서 txt파일에 표시했었다면.. 하는 문제였다.


2. Syntax Highlighter 1,2 (200, 200)

Syntax Highlighter 1,2 문제는 code injection 관련 한 문제 라고는 하지만.. 같은 풀이방법으로 2문제가 다 풀려서 솔직히 의도 파악은 힘들었다.

두 문제 모두 내가 올린 파일에 대해서 highlight 방식을 지정해 주면 그 문법에 맞게 하이라이팅 한 것을 웹페이지에 뿌려주는 형식이었다.

팀원의 발견으로 cat 명령어를 내부적으로 사용하는것을 알았고, FLAG값을 읽어오게 페이로드를 작성했으나 FLAG라는 문자열을 하드코딩으로 필터링 해 둔것 같았다.

cat 명령어 특성상 인에 들어간 path를 열어서 다 읽어오므로, 첫번째 인자에 FLAG를 주고 두번째 인자에 아무 파일이나 (없는파일도 포함) 주게 되면 

FLAG값이 읽히게 되는 문제였다.

(payload file= FLAG 1)

사실 2번문제로 Revenge! 라는 타이틀을 달고 나왔지만 똑같은 공격에 또 당한 문제였다.





Posted by Maid:: IzayoiSakuya