34t3rNULL 2017. 1. 25. 14:45

<주의> 먼저 풀어보고 풀어보고 풀어보다 풀기 싫고 엉덩이에 땀띠 나셔서 병원가실 것 같은 분만 보시기를 권장합니다 </주의>


준비물 : 파로스, Burp Suite와 같은 툴들 (사용법은 다 아시죠?)



이번 문제는 처음부터 조금 난감하다... 그럼 일단 소스보기를 해볼까? 그...그래 해보자...





일단 엄청 긴데. 쉽게 해석해보자면 오른쪽 밑에 5X5 칸 중 하나를 누르면 검은색으로 바뀌고 검은색일 때 1이라는 value를 가질 수 있다고한다. 이 값은 hidden 형태로 전달되며 answer값과 일치하면 go()라는 함수가 실행된다고 한다.


결국 위에 그림을 풀어야한다는 뜻인데.... 다시 그림 보면서 해보자..





위에 5와 0이 힌트 같은데.. 아무래도 칠하라는 뜻 같다. 5는 5칸 0은 0칸 그렇다면 다른 것들은 1칸씩 칠하고 3칸씩 칠하라는 것 같다. 한 번 해보자! 3은 연속해서 칠하고 1은 뛰어서 칠하다 보면




위와 같은 모양이 나오게 된다.  이와 같이 한 후 gogo를 눌러 보면 다른 페이지로 바뀐다.




되게 심플한 페이지다. 아마 name에 자신의 닉네임을 넣으면 클리어되는 것 같다. 해보자!





??? 뭐지 이렇게만 뜨고 클리어는 안 된다... 한 번 admin을 넣고 다시 해보자..






?????????????????????????? 이게 뭐람 ??????????????

그냥 위에 색칠문제가 끝이 아니였네... name을 입력하는 페이지의 소스 보기를 해보자.


..... kk는 get방식으로 전송하고 answer는 hidden 그리고 name은 post 방식으로 전송하는데 위에 &_1= 어쩌구를 막 건드리면 다시 첫 페이지로 리턴 된다. (kk=admin을 넣어봤지만 실패) 그럼 get으로 전송되는 것을 건드는 것은 아니니 post로 전송되는 값을 건드려보자! 그럼 준비물인 파로스를 꺼내서 값을 바꿔보자.





흠.... answer=10101~~~~~~&id=EATERNULL을 확인할 수 있는데요.  이 값이 웹 페이지에 쌓이고 쌓이는 걸 보면 DATABASE에 저장됨을 알 수 있고, 이를 이용하여 인젝션 공격을 하면 뭔가 풀릴 것 같은 기분이 듭니다.

대충 INSERT INTO DB명 VALUES (~~~~~~)과 같이 삽입한 다음 SELECT로 웹페이지에 표시한다고 생각이 되네요. (파로스로 id를 EATERNULL 대신 admin으로 변조하면 name이 admin으로 나온다에서 착안했습니다 ㅎ)

SQL injection처럼 조건이 무조건 참이 되게 하면 될 듯 하네요. & 앞에 OR1을 넣어볼까요?







no hack이 되네요.. 하하하하하하....ㅜ... 아마 필터링되는 듯 하네요... 그래도 OR을 이용한 sql injection이라는 힌트를 얻었네요. 그럼 OR의 필터링을 피할 문자가 무엇이 있을까요?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

||라는 것이 있죠 ㅎㅎ 그렇다면 &앞에 ||1을 넣고 파로스를 돌려본다면??






클리어~



뒷 이야기 ) 더 쉽게 풀 수 있는 방법이 있어요 ㅋㅋㅋㅋㅋ 차라리 처음부터 hidden값을 바꿔서 주면 끝나는 방법이 있네요 ㅋㅋㅋ 개발자 도구 (F12)에 들어가서



이런 식으로 바꿔주면 끝... 이게 더 낫네 ㅋㅋ