DongDD's IT

[webhacking.kr] Level 3 본문

Wargame/webhacking.kr

[webhacking.kr] Level 3

DongDD 2017. 11. 11. 16:12

[webhacking.kr] Level 3



이번 문제는 들어가보니 다음과 같은 그림퍼즐이 있었다. 다른 웹해킹 문제와 달리 퍼즐이 있는 것이 신기했다. 처음에는 뭔지 몰라서 클릭하다 보니 오른쪽 밑 25개의 사각형이 클릭 시 검정색으로 바뀌는 것을 알 수 있었다. 


클릭해보니 위와 같이 검정색 사각형이 생기는 것을 볼 수 있었다. 어떤 퍼즐인가 생각하다가 퍼즐의 해답을 알아냈다. 위와 왼쪽에 있는 숫자는 한줄에 있는 검정색 사각형 수를 의미하는 것이고 3이나 5같은 숫자는 한 줄에 연결되어 있는 검정색 사각형의 수고 1,1,1 이라고 표시된 것은 떨어진 검정색 사각형이 1개, 1개, 1개씩이라는 것을 의미하는 것 같았다.

생각한대로 위와 같이 검정색 사각형을 만들었다. 맨 밑은 5이기 때문에 검정색 사각형 5개가 연결된 형태이고, 위쪽 2,4번째 줄의 3은 3개가 연결된 형태이기 때문에 2,4 번째 줄은 완성하고 왼쪽 첫번째 줄과 위쪽 1,3,5번째줄을 보고 나머지 검정색 사각형을 채워 모양을 완성할 수 있었다. 위와 같은 그림을 완성한후 gogo버튼을 클릭하니 다음 페이지로 넘어갈 수 있었다.


퍼즐을 맞추고 나니 name을 입력하는 창이 나왔다. 아이디를 입력하고 write버튼을 눌러보았다. 버튼을 클릭하고 나니 입력한 이름과 답과 IP주소가 기록에 남는 것을 볼 수 있었다. 퍼즐이 끝이기엔 너무 쉽다고 생각했는데 이중으로 문제가 되어있는 것 같았다. 이름 입력하는 칸에 sql injection, XSS등 여러가지를 시도해보았지만 에러라던지 필터링이 되어있는 것 같이 보이는 현상이 일어나지 않았다. 그래서 일단 소스 코드를 살펴보기로 했다. 




소스 코드를 보니 이름을 입력하는 칸 위에 hidden 설정으로 answer를 입력하는 칸이 숨겨져 있었다. 아마 기록을 남기는 부분에 입력한 name뿐만 아니라 숨겨져 있는 answer값 또한 POST방식으로 전송되어 기록되는 것 같았다. 이름으로는 아무 일도 일어나지 않았기에 저 값을 수정해서 넘겨보았다. answer의 값이 변화하는 것을 볼 수 있었고 저 부분에 sql injection을 시도해보았다.



answer 부분에 '를 입력해보니 위와 같이 no hack이라는 메시지가 출력되었다. 이 메시지가 출력된 것으로 보아 answer부분을 통한 sql injection을 시도해서 문제를 해결해야 한다는 것을 알 수 있었다. 여러가지를 모두 시도해보았다. 필터링을 찾기 위해 여러 시도를 해보니 몇가지가 필터링 되있는 것을 알 수 있었다. ', or, =, / 등을 넣어보니 no hack이라는 메시지가 출력된 것을 볼 수 있었다. 그 후에 숫자가 아닌 문자 'A'를 넣어보니 쿼리 에러라는 메시지를 볼 수 있었다. 아마 숫자만 입력받을 수 있게 되어 있는 구조인 것 같았다.

여러 시도를 해보다가 or을 표현할 수 있는 다른 방법 | 를 생각해냈다. |를 입력해보니 쿼리 에러라는 메시지가 나온 것을 보아 아마 |는 필터링이 되어있지 않는 것을 알 수 있었다.

이 것을 기반으로 or 대신 ||을 사용하니 문제를 해결할 수 있었다.







**************     Answer & Flag     **************



1 or 1 대신 1 | | 1을 사용해보니 이 값이 true가 되어 내가 입력한 정보가 아닌 admin이라는 이름으로 새로운 기록이 생기는 것을 볼 수 있었다. 새로운 기록의 answer인 'new_sql_injection'값을 auth에 제출하니 통과할 수 있었다.



어떻게 보면 되게 단순한 문제였지만 필터링을 우회하기 위해 여러 시도를 하는데 시간을 많이 쓴 것 같다.

or 대신 ||을 사용하는 것은 당연한 것이지만 너무 sql이라는 것에 매달려있던 탓인지 ||을 생각하는데 오랜 시간이 걸렸다.






'Wargame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] Level 52  (0) 2017.12.02
[webhacking.kr] Level 10  (0) 2017.11.19
[webhacking.kr] Level 11  (0) 2017.09.30
[webhacking.kr] Level 12  (0) 2017.09.27
[webhacking.kr] Level 41  (0) 2017.09.24
Comments