이 문제는 SQL Injection문제이다. 해당 문제 페이지에 접속하면 아래와 같은 퍼즐(물론 전부 칠해져 있진 않다)이 존재한다.
숫자에 맞게 퍼즐을 맞추면 아래와 같이 칠해지고 solved를 누르면 아래와 같은 페이지가 나온다. 여기서부터 문제의 시작이다.
문제 풀이
나는 다음과 같은 순서로 문제를 해결했다.
- your name에 아무거나 대입해봤다. 그 결과 이름은 계속 바뀌지만, answer과 ip는 그대로였고, SQL injection을 시도해봤지만 해당 쿼리문이 그대로 나와 먹히지 않는다는 걸 알 수 있었다.
- 계속 answer과 ip가 그대로인 것을 보고 패킷을 잡아보았다. answer과 id가 post 방식으로 넘어가는 것을 알 수 있다. answer부분에 SQL injection 쿼리('or 1=1 -- )를 주입하여 문제를 해결하였다.
어떻게 보면 때려 맞춘 식이여서 다른 사람들의 write-up을 보고 해결과정을 보충해보았다.
문제 해결 추가
input form에서 페이지 소스코드를 확인해보면 위에서 본 패킷에서도 알 수 있듯이, index.php에 post 방식으로 answer과 id를 보내는 것을 알 수 있다. 이 때 answer의 type은 hidden이고, value는 1010~11로 고정되어 있다.
대부분 input에 hidden 을 넣는 경우 DB에 값을 넣을 때 사용자가 임의로 수정하는 것을 막기 위해서 쓴다고 한다!
다른 write-up에서는 이 부분에서 answer 값을 이용해서 SQL 인젝션을 시도하면 되겠다고 유추하였다고 한다. → 소스코드 확인하기!!
참고 write-up
https://leeggoggal.tistory.com/6
'wargame - web > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-06 Write Up (0) | 2022.01.02 |
---|---|
[Webhacking.kr] old-01 Write Up (0) | 2022.01.01 |