프로젝트/Webhacking.kr

[Webhacking.kr] Challenge(old) 3번 문제

Uggjjini 2021. 7. 1. 10:14

문제 페이지는 해당 페이지와 같습니다.

 

해당 화면은 Nonogram이라는 퍼즐게임으로 가로 세로에 정해진 숫자만큼 타일을 칠하는 게임이다.

 

자세한 설명은 해당 링크를 참고한다.

 

 

해당 Nonogram을 풀면 상단과 같이 나오고 solved를 눌러 제출한다.

제출 시 하단과 같은 페이지로 이동한다.

입력창에 test라고 입력하고 submit을 눌러 제출한다.

 

 

name, answer, ip가 나오는 것을 확인할 수 있다. (해당 ip는 보안상 블록처리했다.)

 

이전 페이지로 돌아가서 입력창에 test1를 입력하고 submit 한다.

 

입력 내용들이 누적되어 기록되는것을 확인할 수 있다.

또한, name 부분만 바뀌고 answer값은 고정이 되있는 것을 알 수 있다.

 

name 입력창에 하단 구문들을 입력하여  SQL injection 공격이 가능한지 확인해 본다.

'or 1=1--

'or 1=1#

 

 

해당 구문들이 그대로 나오는 것을 보아 name 입력창에서의 SQL injection 공격은 불가능하다는 것을 알아냈다.

 

해당 페이지의 소스를 확인해 본다.

 

 

<input type=hidden name=answer value=1010100000011100101011111>

 

상단 구문을 보면 hidden 필드로 answer 값이 전달되는 것을 확인할 수 있으며 해당 value값은 "1010100000011100101011111"으로 고정되있는 것을 알 수 있다.

 

입력창이 있는 페이지의 URL 주소를 확인해본다. 

 

https://webhacking.kr/challenge/web-03/index.php?_1=1&_2=0&_3=1&_4=0&_5=1&_6=0&_7=0&_8=0&_9=0&_10=0&_11=0&_12=1&_13=1&_14=1&_15=0&_16=0&_17=1&_18=0&_19=1&_20=0&_21=1&_22=1&_23=1&_24=1&_25=1&_answer=1010100000011100101011111

 

해당 URL의 _1~_25의 인자들을 연결한 값과 _answer인자의 값이 동일하다는 것을 알 수 있다.

 

_1~_25의 인자들은 Nonogram 퍼즐의 5X5 부분을 의미하고 인자값이 1이면 검정색 블록이고 0이면 하얀색 블록임을 알 수있고, 해당 인자들의 값들을 연결한 값과 answer값이 동일하다면 입력창이 있는 페이지로 이동한다는 것을 알 수 있다.

 

 

따라서 URL의 answer값을 다른 값으로 변경한경우 NO라는 문구와 함께 이전 Nonogram 퍼즐이 있는 페이지로 이동하는 것을 확인할 수 있다.

 

 

 

개발자 도구를 통해 해당 answer 값에 하단 구문을 넣어 SQL injection 공격을 시도해본다.

 

' or 1=1--

 

 

그리고 입력창의 sumbit 버튼을 누르면 문제를 클리어했다는 알림창이 뜨며 페이지가 이동된다.