be prepared! codingTest/SuNiNaTaS

challenge-level3

그라파나 2022. 5. 16. 17:59

문제 이게 끝이다. 실화냐.

http://suninatas.com/challenge/web03/web03.asp

 

뭐지? 싶어서 뇌정지가 3초가량 왔지만, 이정도에서 쫄지 않는다.

 

소스를 보자.

 

<!DOCTYPE html>

<html>
<head>
    <title>Game 03</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="shortcut icon" href="/static/img/game.ico" />
</head>
<body>
    <table width="100%" cellpadding="0" cellspacing="0">
        <tr>
            <td align="center">
                <table width="1000" cellpadding="0" cellspacing="0">
                    <tr height="20">
                        <td width="100%" bgcolor="000000" align="right">
                            <input type="button" name="main_btn" value="main" class="btn_check" style="width: 60" onclick="location.href = '/'">&nbsp<input type="button" name="main_btn" value="Back" class="btn_check" style="width: 60" onclick="history.back()"></td>
                    </tr>
                    <tr height="500">
                        <td bgcolor="000000" style="line-height: 15" align="center"><font color="white" size="10"><b>Write articles in Notice Board!</b></font></td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</body>
</html>
<!--M@de by 2theT0P-->

세상에 힌트가 아무것도 없다. 아무것도. 

 

진짜 뇌정지가 왔다. 한 1분은 멍때린거 같다. 그러다 main을 눌러서 원래 페이지로 갔는데.

어? notice?

 

다시 문구를 읽어봤다.  Write articles in Notice Board!

 

notice board에 글을 쓰라고? 

 

여기엔 글쓰기 버튼이 없었다.

이거다!

 

그러면 개발자 도구에 가서 숨겨진 write버튼을 찾아보자......

 

하지 않길 바란다. 눈을 씻고 30분을 찾아봐도 해당 버튼은 보이지 않았다.

 

어쩔 수 없이 구글신의 도움을 빌려보기로 했다...

 

https://200301.tistory.com/17 이분의 도움을 조금 받았다.

 

freeboard의 write까지만 봤다. 

 

아!

 

프로젝트 경험이 없으면 절대 알 수 없는 것중 하나.

 

url의 작성 규칙. @RequestMapping을 어떻게 주었는가 생각해보면 금방 풀리는 문제였다.

 

http://suninatas.com/board/free/write

 

보통 루트를 프로젝트 네임없이 "/" 이렇게 처리하고 나면

 

그 뒤에는 기능별로 큰 카테고리가 묶인다.

 

url을 보니 루트 뒤에 board의 free 의 write다.

 

free는 당연히 자유게시판이다. freeBoard니까. write는 게시글 쓰기 기능

 

그러면 자연스럽게 board/notice/write라는 url를 호출하면 그 기능이 동작할 것이라는 생각을 떠올리게 된다.

인증키가 나왔다.
level 3 pass!!

문제를 3개째 풀어보니 보안에 대해 자연스럽게 알게 되는 것들이 있었다.

url을 유추하여 쓰면 동작하게 만드는 것은 거의 해킹이나 다름없지 않은가?

그럼 유추하지 못하게 써야하는데 이걸 또 어떻게 해야하지? 하는 고민이 생겼다.

 

보안에 대해서 다시 한 번 생각하게 만들었다.

 

그리고 도움되지 않는 경험은 없다는 것을 깨닫게 된다.

 

중간에 포기하고 검색해본 자신을 자책하며, 다음문제는 더욱 힘내보리라 다짐한다.

'be prepared! codingTest > SuNiNaTaS' 카테고리의 다른 글

challenge-level4  (0) 2022.05.16
challenge-level1  (0) 2022.05.16