티스토리 뷰

수업 노트/natas

natas14 solution

오리지날초이 2023. 5. 23. 09:44

URL : http://natas14.natas.labs.overthewire.org/

id : natas14

password : qPazSJBmrmU7UQJv17MHk1PGC4DxZMEP

(2023. 04 기준)

 

 

username 과 password 를 입력받는 페이지입니다.

sql injection 의 느낌이 스물스물 올라옵니다.

 

역시나 간단한 select 쿼리가 들어간 구조입니다.

 

SQL Injection 을 활용하려면 Database 를 간단히 설명해야 하는데

이는 범주가 넓고 제반 환경이 필요하기 때문에 여기서는 다루지 않지만

sql 에 대해 간단히 개념을 익히고 연습해보고 싶다면 아래 사이트를 추천합니다.

https://sqlzoo.net/

 

SELECT basics - SQLZOO

Checking a list The word IN allows us to check if an item is in a list. The example shows the name and population for the countries 'Brazil', 'Russia', 'India' and 'China'. Show the name and the population for 'Sweden', 'Norway' and 'Denmark'. SELECT name,

sqlzoo.net

 

이제 문제 풀이에 대해 살펴보겠습니다.

더보기

문제에 이미 구현된 쿼리 코드는 다음과 같습니다.

 

$query "SELECT * from users where username=\"".$_REQUEST["username"]."\" and password=\"".$_REQUEST["password"]."\""

 

입력창에 그림과 같이 임의의 username, password 를 입력하면

 

$query "SELECT * from users where username="test"and password="test123"

식으로 입력값이 반영되게 되는 구조입니다.

 

username 과 password 에 대해 아무런 정보도 없는 상태에서 해당 쿼리로 패스워드를 탈취하려면

항진명제(Tautology) 를 이용해야 합니다.

 

항진명제는 논리학에서 사용되는 개념으로, 모든 경우에 참인 명제를 나타내는 용어입니다.

 

SQL Query 문을 항상 참이 되게끔 구성하면 

사용자가 애플리케이션의 입력 폼 또는 쿼리 매개 변수를 통해 악의적인 SQL 코드를 삽입하여

데이터베이스에 대한 불법적인 액세스를 시도하여

사용자(공격자)가 데이터베이스의 내용을 조회, 수정 또는 삭제등을 할 수 있는

SQL Injection 이 가능하게 됩니다.

 

natas14 에 구현되어 있는 쿼리문을 아래와 같은 방식으로 바꾸면 어떻게 될까요?

$query "SELECT * from users where username="test" or 1=1 # and password="test123"

 

원래의 쿼리문은 username 과 password 가 모두 일치해야

select * from users 를 실행해주겠지만

 

where 조건 뒤에 username ="test" 의 참, 거짓 유무와는 상관없이

username = "test" or 1=1 이 성립되면서

where 조건의 결과가 무조건 참인 쿼리문이 됩니다.

 

거기에 mysql 주석을 표기해주는 # 문자까지 덧붙여주면 기존의 and 조건은 무효화되어서

SQL Injection 이 가능한 항진명제로 작동되게 되는 것이죠.

 

결국은 실제 username 을 기입할 필요 없이 아래와 같이 

SQL Injection 문을 입력해주면 됩니다.

 

 

natas 사이트에서 통하는 취약점은 실제로 아주 오래전에는 통했을지도 몰라도

지금은 먹히지 않는게 대부분입니다.

 

혹시라도 natas 에서 배운 기법을 활용해서 현실세계에서 웹취약점을 탐색하는 행위는

하지 않기를 강력하게 권고합니다.

 

natas 는 보안 학습을 위해 제작된 사이트로 취약점 탐색 행위를 하는것을 허용하게끔 설계되었고

그 영향력이 제한적이지만 동일한 방식으로 현실에 존재하는 개인/상업 사이트에 취약점 점검을 한다면

여러분은 법적인 책임을 지게 될 수 있습니다.

 

국내외 대부분의 사이트들은 침입탐지 시스템 등을 운영하고 이상 탐색 행위를 추적할 수 있습니다.

 

이곳에서는 웹보안에 대한 기본적인 개념을 익히는데 만족하고

그 외 다양한 시도는 사전 협의된 테스트 환경이나 본인이 감당할 수 있는 실험 환경 등에서만

진행하길 바랍니다.

 


 

728x90
반응형

'수업 노트 > natas' 카테고리의 다른 글

sql injection 추가 자료 #1  (0) 2024.01.25
natas15 solution  (0) 2023.05.29
natas13 solution  (0) 2023.04.20
natas12 solution  (0) 2023.04.19
natas11 solution  (0) 2023.04.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함