이번 문제의 힌트는 아래와 같다.

 


Flag0

 

 

우선 Create a new page 를 클릭하여 글을 등록해보자.

등록하면 아래처럼 글이 등록 된 것을 볼 수 있다.

 

URL을 보면 ~~~/page/14 에서 14의 의미는 아마 필자가 적은 글의 번호 일 것이다.

1 부터 시작해서 값을 늘려가다 보니 7번 글에서 아래 사진처럼 Forbidden 이 출력 된 것을 볼 수 있따.

 

 

7번 글을 보기 위해서는 글 수정 기능을 통해 우회가 가능하다

아까 필자가 작성한 13번 글로 가서 Edit this page를 누른다.

 

 

 

그다음 ~~~/page/edit/13 을 ~~~/page/edit/7 로 바꾼다.

아래 사진 처럼 flag 값이 뜬 것을 확인 할 수 있다.

 

 


Flag1

웹은 서버측으로 인자를 전송할때 그 값을 제대로 검증을 하지 않으면 의도치 않은 에러가 발생할 수 있다.

Flag0에서 풀었던 과정에서 Edit page에 글 번호를 나타내는 파라미터 값이 있다.

 

 

아마 DB에서 13번을 눌러와 웹 페이지에 결과를 뿌려주는 구조일 것이다.

만약 ~~~page/edit/[number] 에서 number 값을 제대로 검증을 하지 않았다면 SQL injection 공격이 가능할 것이다.

테스트를 위해 싱글쿼터를 넣어보았다.

 

 

 

 


Flag2

글을 작성 할 수 있다면 xss를 테스트 해 볼 수 있다.

아래 처럼 제목과 글에 xss 스크립트를 삽입한다.

하지만 alert 함수는 동작하지 않았다.

내용 부분에서는 script 태그가 다른 것으로 대체 되었다. 제목은 그대로 들어 갔지만 동작은 하지 않는다.

이때 메인 페이지로 돌아가면 제목에 적혀 있던 스크립트가 동작하면서 flag 값을 출력하는 것을 볼 수 있다.

 

 

 

 


Flag3

 

Flag2에서 scirpt 태그가 내용에서는 다른걸로 대체 되었다.

굳이 scirpt 태그를 쓰지 않아도 다른 방법으로 alert를 띄울 수 있다.

 

아래 처럼 스크립트를 작성 후 등록을 해보자.

 

 

 

등록하면 아래 처럼 alert 함수가 동작 한것을 볼 수 있다.

개발자 모드로 해당 코드를 보면 flag 값이 들어 간 것을 볼 수 있다.

 

 

'CTF > Hacker101' 카테고리의 다른 글

[Hacker101 CTF] Micro-CMS v1  (0) 2019.07.15
[Hacker101 CTF] - A little something to get you started  (0) 2019.07.15