Webhacking.kr old 3번 문제 풀이
nonogram이라는 퍼즐게임이 보인다.
저 빈부분을 클릭하면 검정색으로 칠해지는건데.. nonogram이 뭔지 몰라서 하는법을 검색해봤다.
nonogram 사이트에 있는 게임 규칙은 다음과 같다.
-> 격자무늬가 있는 직사각형의 칸을 검정색으로 칠하거나 X자를 적어넣어야 합니다. 가로행의 끝에는 해당 행의 검정 칸 수가 표시되어 있습니다. 세로열의 끝에는 해당 열의 검정 칸 수가 표시되어 있습니다. 쓰인 숫자만큼의 연속된 칸을 칠해야 하며, 숫자와 숫자 사이는 한 칸 이상을 비워야 합니다. 숫자의 순서와 검정 칸수의 순서는 일치해야 합니다. 모든 검정 칸을 찾는 것이 목표입니다.
칸을 좌클릭하면 검정색이 됩니다. 우클릭하면 X표시가 됩니다. 클릭하고 드래그하면 여러 칸을 표시할 수 있습니다.
그러니까 이 퍼즐을 봤을때 왼쪽 부분 숫자를 보면 처음에 1 1 이 적혀있는데, 그럼 그 가로줄에 블럭을 한개씩 선택하되, 블럭을 연속해서 칠하면 안되는 것이다. 그리고 밑에 2 2는 해당 가로줄에 블럭을 2개씩 선택하되, 그 블럭이 연속되거나 겹쳐서는 안된다. 아래 3은 그냥 3개 블럭을 연속으로 칠하면 되고, 아래 2, 그리고 그 아래 2도 블럭을 2개씩 칠하면 된다. 대신 우측상단에 있는 숫자와 잘 조합을 해서 칠해주면 되는 것..!
위의 규칙을 토대로 풀어보면 이런 결과가 나온다. solved 버튼을 눌러주면
제대로 된 문제가 나옴 ^^:
답을 아무렇게나 입력하면 log 기록이 계속해서 남는다.
name에 내가 입력한 값이 입력된 거고, answer는 1010100000011100101011111로, ip는 125.129.154.104로 동일하게 남겨진다.
혹시 또 injection..!!이라고 생각했는데 그냥 문자열로 저장돼서 공격효력은 없는거 같다. 그리고 name 길이에 어느 정도 제한도 있음
코드를 잘보면 answer 값인 1010100000011100101011111가 hidden으로 숨겨져있다.
이걸 type을 display로 바꿔주면 수정할 수 있는 형태로 화면에 출력된다.
요 값을 수정하면 answer 값이출력된다는 것.
평소하던 injection 공격을 해봤는데
query error!라는 결과가 나온다. 이렇게 반응한다는건 바로 sql injection 공격이 먹힌다는 것.
이렇게 다시 공격해봤다.
히히
공격 성공.