4주차_Webhacking 과제2 : los(gremlin)

2023. 10. 5. 17:10SWLUG/web hacking

두번째 문제

 

 

https://los.rubiya.kr/gate.php

 

los.rubiya.kr

두번째 문제인 Los는  Load of SQL injection(LOS)는 SQL injection에 대해 실습해 볼 수 있는 사이트인데 던전 형식으로

총 25단계까지 있으며 한단계씩 클리어해가는 Wargame사이트이다.

 

 

첫번째 문제를 들어가자마자 아래와 같은 php코드가 떴다.

위 코드의 내용을 살펴보면 , 4번째줄 정도부터 의미있는 내용이 있는데, preg_match 함수로 id와 pw의 특정 문자열을 필터링하고 있는 것을 확인할 수 있다.

 

또한 입력받은 id와 pw를 확인하여 쿼리문이 정상적으로 수행되면 문제가 해결된다.

sql injection 을 이용하여 쿼리문이 항상 true를 반환할 수 있도록 id와 pw의 인자를 조작해야한다.

 

select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'

select id from prob_gremlin where id='1' or '1' and pw='1' or '1'

 

첫번째 줄에 쿼리는 "prob_gremlin" 테이블에서 'id'와 'pw'가 주어진 값과 일치하는 행의 'id'를 선택한다.
이 쿼리는 사용자의 입력이 직접 쿼리에 삽입되기 때문에 SQL 인젝션 공격에 취약하다.

두번째 줄에 쿼리는 "prob_gremlin" 테이블에서 'id'가 '1'이거나('1' or) '1'이고(and) 'pw'가 '1'이거나('1' or) '1'인 행의 'id'를 선택한다.
마찬가지로 SQL 인젝션에 대한 취약점이 있다.

 

위와 같은 sql문이 전송되도록 하기 위해서는 페이지의 url 뒤에 ?id=1' or '1 & pw=1' or '1을 입력해줘야한다.

 

이 문제도 결국은 수업때 배웠던 방식을 활용하는 것 같다.

 

 

위와 같이 입력하면 id와 pw가 모두 참이 되므로, 최종 쿼리문은 true가 반환되며 문제가 풀린다. 

 

 

 

clear가 떴다.

 

4주차까지 문제를 다양하게 풀어보면서 내가 추측하는게 딱 맞아 떨어지기보다는 아직까지는 모르는걸 많이 쌓아가는 기분이다.

 

아직은 모르는게 당연하니까 한문제씩 풀때마다 그냥 흘려보내지 않도록 잘 복습해야겠다.

 

참고 학습 자료

 

[LOS] 1. gremlin 문제 풀이 :: 끄적끄적 (tistory.com)

 

[LOS] 1. gremlin 문제 풀이

문제로 들어가면 상단에 쿼리문이 출력되어 있고, 아래에는 해당 웹페이지의 코드가 나와있다. 소스코드를 간단히 살펴보면, preg_match 함수로 id와 pw의 특정 문자열을 필터링하고 있다. 또한 입

g-idler.tistory.com