문제 페이지는 해당 페이지와 같습니다.
해당 화면은 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 버튼을 누르면 문제를 클리어했다는 알림창이 뜨며 페이지가 이동된다.
'프로젝트 > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) 6번 문제 (0) | 2021.07.05 |
---|---|
[Webhacking.kr] Challenge(old) 5번 문제 (0) | 2021.07.02 |
[Webhacking.kr] Challenge(old) 4번 문제 (0) | 2021.07.02 |
[Webhacking.kr] Challenge(old) 2번 문제 (0) | 2021.06.29 |
[Webhacking.kr] Challenge(old) 1번 문제 (0) | 2021.06.29 |