320x100

문제

 

 

 

base64 :

  • ey 로 시작하거나, == 이 나오면 base64 확률이 높다.
  • 난수가 적혀 있으면 일단 base64 디코딩으로 돌려봐야한다.

login.php → dashboard.php → index.php

위와 같은 형태로 로그인 시도가 된다.

→ 의심스러운 auth 데이터를 확인

 

 

 

→ base64 로 돌려보니 아래와 같은 플레인 코드가 나온다.

 

 

false → true로 변경해서 다시 값을 넣어본다.

 

 

true로 바꾼 값을 다시 auth에 적용하면 아래와 같은 화면이 나온다.

 

 


다른 방식의 풀이

 

우선 SQL 인젝션을 시도하려면, 항등원 AND 값을 사용하여 아이디 값이 항등이 되는지 봐야 한다.

→ 실패 → WAF에 의해 차단 되었습니다.

 

WAF 는 Black List 기반으로 Filtering을 진행한다.

or 1=1 등을 select에 넣는다.

 

 

test’ and ‘1’=’1 에서 무엇이 블랙리스트에 들어가는지 확인해야한다.

우선 가 블랙리스트인지 확인해본다

→ test’ and ‘ → follow direction → 결과, 로그인 오류가 발생하였습니다.

 

testand 로 실행했을 때 → WAF에 의해 차단되었습니다 라는 문구가 나옴

 

구글 mysql and alternative 와 같은 식으로 검색

 

and 대신에 사용할 수 있는 것은 ⇒ &&

&& 는 파라미터를 구분하는 구분자 이기 때문에, URL 인코딩을 해서 집어넣어야한다.

즉 아래와 같이 집어 넣는다.

 

 

결과적으로, &&는 WAF가 탐지를 못한다.

 

 

&&에 ‘1’=’1 을 넣어서 진행을 하면 로그인이 된다.

즉, SQL 인젝션 취약점이 존재한다.

 

 

→ OR 도 동일한 방법으로 진행해본다.

WAF에 OR 가 블랙리스트로 들어가있는 것을 확인할 수 있다

 

OR 의 대체 → ||

 

 

 

접속이 잘 되는 것을 확인할 수 있다.

test → admin 으로 변경하여 시도하면 로그인에 성공을 한다.

  • 비밀번호 쪽에서는 WAF가 안걸려 있어서 뚫린다고 함
  • 원인(포인트)을 찾고 해결하는 방법을 고민해야한다.

다음에 응답이 왔을 때, 저장한 글자가 있다면 바로 그쪽으로 넘겨준다.

 

300x250

+ Recent posts