우선 즐겁게 네모네모 로직을 해준다.
이후에 gogo 버튼을 누르면
아래와 같은 화면으로 넘어가고
F12를 통해 소스를 확인해보면
입력된 데이터를 서버로 전송하는 form이
post 방식으로 전달되는 것을 확인할 수 있었다.
input 태그 속성인 hidden을 지우면
아래처럼 name 앞부분에 value 값이 뜨는 것을 볼 수 있고
이 값을 1로 변경해 전송하면 다음과 같다.
그리고
와이어샤크를 통해 패킷을 확인해본 결과
answer=1&id=a 형식으로 데이터가
body에 넣어 전달되는 것을 확인할 수 있었다.
여기에 sql injection을 시도해보자.
or '1'='1' 해도,
or 1=1 해도,
or 1(True) 해도 아래와 같은 메시지가 떴고,
|| 1=1 해도 똑같은 메시지가 뜨는 걸 보니
=도 필터링이 되어있는 듯 했다.
그래서 || 1(True)를 했더니 admin 이름으로 기록된 정보를 볼 수 있었다.
메뉴의 Auth에 들어가
flag 값에 answer 값을 넣어주면
3번 문제를 클리어 할 수 있다.
여기서 가장 중요한 사실은
form 태그의
get 방식, post 방식
둘 다 보안에 취약하다는 점이다.
둘의 차이는 단지
URL에 데이터가 보이느냐와 안보이느냐이기 때문에
sql injection 같은 공격을 할 수 없도록
or 같은 문자도 필터링하고
전송되는 데이터의 값을 변경할 수 없도록 처리해줘야한다.
'Web > webhacking.kr' 카테고리의 다른 글
[Webhacking] Challenges 1. Cookie value (0) | 2018.11.24 |
---|---|
[Webhacking] 회원가입, base64 decode (0) | 2018.11.24 |