article thumbnail image
Published 2021. 3. 27. 00:29

 

gremlin에 접속!

gremlin

gremlin에 접속하면 php코드를 바로 볼 수 있다.

 

코드를 살펴보면 GET방식으로 id와 pw 값을 입력 받아서 query에 포함시키고, 데이터베이스에 전달해서 return되는 값이 있으면 gremlin이 solve되는 것 같다.

 

그러면 id나 pw에 어떤 값을 넣어야 mysqli_fetch_array()에 대한 return값을 받을 수 있을지 생각해야 한다.

where문을 항상 참이 되게 하면 prob_gremlin 테이블에서 id 컬럼의 데이터를 가져오기 때문에 반환 값을 받을 수 있을 것 같다.

 

그렇다면 where문을 항상 참이 되게 하려면 어떻게 해야할까.

[variable] or 1 일 때 [variable]이 참이든 거짓이든 or 연산자와 1 때문에 항상 참이 될 것이다.

 

where문 뒤를 위와 같은 식으로 바꾸려면 where문에서 id=' 뒤 쪽을 #으로 주석처리 해서 없애야 한다.

그리고 # 앞 쪽에 or 1과 같은 표현을 붙이면 된다.

 

이때 query를 잘 보면 id에 저장되는 값이 '(싱글쿼터)로 묶여있다.

이 점을 유의해서 [variable]에 들어가는 데이터 타입을 문자열로 맞추면 된다.

 

지금까지의 과정을 합쳐서 생각해보면 사용자의 입력은 다음과 같이 만들 수 있다.

' or 1# 

 

위의 입력을 query에 전달하면 query는 다음과 같이 바뀐게 된다.

select id from prob_gremlin where id='' or 1#' and pw=''        // 빨간 부분은 사용자 입력, 초록 부분은 주석처리

 

이 입력을 URL을 통해서 전달해야 하는데 그 전에 ' or 1# 을 URL 인코딩 해야한다. URL 인코딩 결과는 다음과 같다.

%27%20or%201%23

 

이제 이 값을 URL 파라미터를 통해 전달하자.

id=%27%20or%201%23

 

 

그 결과 성공적으로 gremlin을 clear했다!

 

 

 

 

'Study > Web Hacking' 카테고리의 다른 글

[XSS Challenge] Stage #2  (0) 2021.03.27
[XSS Challenge] Stage #1  (0) 2021.03.27
SQL Injection  (0) 2021.03.26
[natas] Level 0 ~ Level 1 -> Level 2  (0) 2021.03.26
[WEB]: XSS game 06  (0) 2021.02.17
복사했습니다!