-
[Webhacking.kr] 3번 풀이Wargame/webhacking.kr (old) 2019. 2. 28. 01:15
네모로직이다.
네모로직을 풀고, gogo 버튼을 눌렀더니, get 방식으로 어떤 값들이 전송되고 새로운 페이지로 넘어갔다.
새로운 페이지에는 name을 입력할 수 있는 폼이 존재한다.
get 방식으로 전송되는 값이 무엇인지 알아보기 위해 개발자도구(F12)로 이전 페이지의 소스 코드를 보았다.
hidden type으로 로직의 결과가 get 방식으로 전송되고 있다. (검정 : 1, 흰: 0)
다시 원래 페이지로 넘어가서,
name에 test를 입력해 주었더니 페이지에 아래와 같이 출력되었다.
일단 입력할 수 있는 것이 name 밖에 없으니 name의 값으로 SQL Injection을 시도하였다.
입력한 그대로 출력된다...?
name은 공격벡터가 아닌 것 같다.
소스 코드를 보자.
post 방식으로 answer과 name 값을 전송한다.
name은 공격벡터가 아닌 것 같아 answer으로 SQL Injection을 시도하였다.
단, post 방식으로 값을 넘겨주기 때문에 fiddler와 같은 프록시 툴을 이용해야 한다.
fiddler 설치 및 사용법을 모르면 아래 글을 참고하자.
[fiddler 설치 및 사용법] https://grini25.tistory.com/13
answer의 값과 id의 값이 &로 묶여 전송되는 것을 확인할 수 있다.
or을 이용하여 아래와 같이 조작한 후 값은 전송해보았다.
no hack이 페이지에 출력된다.
injection point는 answer이다..!
SQL Injection을 하기에 앞서, 삽질을 줄이기 위해 필터링된 문자열을 확인하였다.
' (싱글 쿼터), =, or, and, --, #
필터링되어 no hack이 출력된다.
", ||, like, true, false
필터링되어 있지 않고, 정상적 쿼리문으로 입력한 것이 아니라 query error! 가 출력된다.
+, %20
아무 값도 출력되지 않는다. (필터링된 것 같지는 않다.)
&&
필터링되어 있지 않다.
원래 출력되던 것이 출력되었지만, 아래와 같이 여러개가 한번에 추가되어 출력된다.
아무 값도 출력되지 않던 개수만큼 증가한다. 단순 오작동인가? 잘 모르겠다.
필터링되지 않는 값을 이용하여 SQL Injection을 수행하였다.
or이 필터링되어 있기 때문에 ||를 이용해 쿼리문을 참으로 만들어주었다.
내가 전송한 값과 admin의 값이 함께 출력되었다.
admin의 answer 값을 Auth 페이지에 인증하면 문제가 풀린다.
'Wargame > webhacking.kr (old)' 카테고리의 다른 글
[Webhacking.kr] 5번 풀이 (0) 2019.03.02 [Webhacking.kr] 4번 풀이 (0) 2019.03.02 [Webhacking.kr] 2번 풀이 (0) 2019.02.28 [Webhacking.kr] 1번 풀이 (0) 2019.02.27 [Webhacking.kr] 회원 가입 (0) 2019.02.27 댓글