- 해석

해보자 다른 사용자의 로그인 자격 증명이 포함 된 요청을 보내려면 "로그인"버튼을 클릭하십시오.

그런 다음 이러한 자격 증명을 적절한 필드에 쓰고 확인을 위해 제출합니다.

패킷 스니퍼를 사용하여 요청을 가로 채십시오.

 

 

#패킷스니퍼(Burp Suite) 사용

 

 

#end

 

#POST 나 GET방식을 판단해야 하므로 버프슈트로 포워드값을 잡아보자.

 - 상단에 POST와 하단에 magic_num이 보인다.

 

#end

 

 

 

#별점을 클릭하니 login이 필요하다고 한다.

 

 

#버프슈트 사용

 - 실패한 쿼리가 나온다.

 

++ 로그인 시도를 위해 페이지 분석, 쿼리 분석을 해보았으나 모두 실패..

 

 

#서버가 처리할 수 있는 요청방식 확인

 - GET을 OPTIONS로 변경하여 보내면 서버가 허용하는 메소드가 출력된다.

   OPTIONS와 GET은 이미 응답을 알고 있으므로, HEAD로 바꿔서 요청해보자.

 

 

#end

#Without password

 

 

# ' (쿼터) 입력 확인

 - 쿼터가 들어가긴 하지만, 모종의 이유로 문자로 들어간다.

 

 

#버프슈트 확인

 - 패스워드 부분에 '를 넣으니 내부에러가 발생한다. 

 

 

#내부 에러 분석

 - 쿼리 형식이 보인다.

 

 

#SQL INJECTION

 - 형식에 맞춰 sqli를 써주면 성공

   -> 1'or'1'='1

   --> 1 또는 1=1 일때, 참이다.

 

 

# ' 기호를 넣어서 injection이 먹히는지 본다.

 - 다른 기호들도 넣어봤지만 별다른 변화가 없다.

  -> 블라인드 sqli로 풀어볼려고 했지만 응답형식이 같아서 실패

 

#뭔가 다른 그림

 - 페이지 좌측상단의 그림과 로그인 그림이 뭔가 다르다. 마치 뜯어달라는 것처럼

   하얀 여백도 존재한다. 

 

#파일 다운로드

 - 별다른 이상은 안보이니 HxD에 넣어서 메타데이터를 보자.

 

#HxD

 - 파일 안에 잘 숨겨져 있는 것을 확인했다.

#서버가 직접 권한을 검사해서 모든 클라이언트한테 출력을 다르게 하거나,

 클라이언트쪽에서 검사해서 접근은 할 수 있지만 출력값이 달라지게 할 수 있는데,

 후자를 이용한 사이트의 취약점(메모리 or 캐시 등엔 기록됌.)

 

2) Salary manager

 

 

#개발자도구 - network

 - network는 로드되는 모든 응답들을 보여주는데, 아무 것이나 조회하면 userid=101으로 뿌려지는 응답들이

  보인다.

 

 

#end

 

 

3) 돈을 안내고 살 수 있게 코드입력하기

 

 

#2번문제처럼 network를 검사.

 - 버튼들을 입력하다 보면 coupons/ 가 보이는데, 안에 있는 쿠폰 중, get_it_for_free를 입력하면 0원이 된다.

 

 

#end

 

#Client side attack : 서버에게 전달되기 전에, 프론트엔드에서 변조.

 

2) Fied Restrictions

 - select field with two possible values : 두 가지밖에 고르지 못한다.

 - Radio button with two possible values : 라디오 버튼 두 가지 밖에 고르지 못한다

 - Checkbox values either on or off : on 혹은 off인 체크박스

 - Input restricted to max 5 characters : 5글자밖에 쓰지 못한다.

 

 모든 제한된 것들에서 다른 것을 할 수 있어야 한다.

  ex) 두 가지 제한 --> 세 가지의 선택지

 

 

#개발자도구 사용

 - 모든 제한 사항을 넘치거나, 바꾸면 된다.

 

1. 옵션 2개제한

 -> 옵션쪽에서 우클릭 한 다음, edit as HTML 을 누르면 HTML 코드를 수정할 수 있게 되는데,

     <option value="option2">Option 2</option> 줄을 복사하고 붙여넣은 다음, 3으로 바꿔주면 된다.

 

2. 2가지의 라디오 버튼

 -> 라디오버튼을 1번과 마찬가지로 하나 복사해서 넣고, input type을 checkbox로 바꿔주고, 기존의 라디오 버튼 하나       도 마찬가지로 checkbox로 바꿔준다.

   라디오버튼 3개로 제출하니까 오답이 났었다. --> 문제에 라디오버튼이라고 명시해서 그런 것 같다.

 

3. on과 off가 가능한 체크박스

 -> input type을 text로 바꿔서 텍스트박스로 만들어버리자.

 

4. 5글자밖에 쓰지 못한다.

 -> maxlength="5" 부분을 6으로 바꾸고 value를 6자리로 바꿔주자.

 

#end

 

 

3) Validation

 - 모든 정규식에 맞지않는 값을 보내야 한다.

 

 

#특수문자를 모두 넣었지만 잘못되었다고 에러를 출력한다.

 

 

#버프슈트로 검사

 - 필드 7개가 에러를 출력했는데, error가 7이므로 0으로 바꿔서 request를 전송한다. --> error=0

 

 

#end

 - 개발자도구에서 이벤트 리스너를 지워주면 풀리기도한다.

+ Recent posts