
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 |