LOS 란 LORD OF SQLINJECTION 의 약자이자 워게임 사이트이다.
los.rubiya.kr 을 통해 접속 할 수 있다.
위 워게임 사이트에서 SQL INJECTION 에 대한 이해도와 기술을 습득하기 위한 좋은 사이트 인거같다.
LOS 풀이 전 SQL INJECTION 이 뭔지 부터 알고가자.!
SQL INJECTION 이란 코드 인젝션의 한 기법으로 클라이언트의 입력 값을 조작하여 데이터베이스를 공격 할수 이있는 공격 방식이다. 주로 사용자가 입력한 데이터를 제대로 필터링을 하지 못했을 경우에 발생한다.
쉽게 말하자면 DB를 사용할 때 쿼리문에 악의적인 코드를 주입한다라고 말 할 수있다.
예를 들어 한 사이트에 로그인을 할려 하는데 필터링이 되어 있지 않으면 쉽게 Admin 계정을 쉽게 탈 취 할수있다.
2021년 기준으로 OWSAP 에서 상위 10가지 보안 위험 랭킹을 발표 한 걸 보면 INJECTION 공격이 3위에 위치하고 있다는 걸 알수있다. INJECTION 공격에도 여러가지 가 있지만 SQL INJECTION 을 먼저 공부 해볼려고 한다.
1. 소스코드

다음과 같이 소스코드를 볼 수 있다.
PHP 파일 내용을 읽어보면, 7번 째 코드를 보면
$query = "select id from prob_gremlin where id = '{$_GET[id]' and pw='{$_GET[pw]}'"; 라고 쿼리문을 볼 수 있다. 여기서 $_GET[id] 또는 $_GET[pw] 를 볼 수 있는데 여기서 GET 이란 URL 에 데이터를 붙여서 전송하는 방식이다. url 뒤에 ?를 통해 get 방식을 사용 할 수있다. 그리고 쿼리문안에 내용을 보아 id 와 pw 를 같이 사용해야하는걸 볼수있다. 사용 방법은 url 뒤에 ?id = &pw= 를 사용한다. and 대신 & 을 사용하여 쿼리문을 작성한다. 쿼리문 마다 다르지만 los 1번문제의 쿼리문을 작성하여 풀면 되는데
2. 풀이

url 뒤에 ?id=admin&pw=1%27or%271 이라는 페이로드를 짜 넣었더니 풀렸다.
%27 은 싱글쿼터(')를 url 인코더를 한것이다. 1번문제 답게 간단하게 풀렸다.
'Write-up > [LOS]' 카테고리의 다른 글
[LOS] cobolt (0) | 2023.02.09 |
---|---|
[LOS]goblin (0) | 2023.02.09 |