강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

신예준님의 프로필 이미지
신예준

작성한 질문수

해킹 입문부터 중급까지, 한 번에 배우는 웹해킹

제가 이해한게 맞는지 궁금합니다

작성

·

16

0

1. 메타데이터 관련

강사님께서

MSSQL- sys

MYSQL, Maria db, oracle - information_schema

Sqlite - sqlite_master

메타데이터를 보관하는 시스템 데이터베이스? 같은게 이렇게 있다고 알려주셨는데 그럼 sql injection을 시도해볼 때는 sys가 있는지 information_schema이 있는지 sqlite_master가 있는지 확인하고 어떤 데이터베이스를 사용하는지 알아봐야 하나요?

2. sleep()

 

SELECT FROM user WHERE username = 'admin' AND length(password)= 10 AND sleep(5)처럼 사용하는 게 다른 언어 논리식처럼 a and b에서 a가 거짓이면 b는 평가 자체도 하지않는 단락 평가를 이용한 것 맞나요?

강의 잘 보고있습니다. 감사합니다

답변 2

1

knockOn님의 프로필 이미지
knockOn
지식공유자

안녕하세요 ㅎㅎ 정확하게 이해하신 것 같습니다!

모든 스키마들을 입력하며 데이터베이스를 확인하는 방법도 있지만, https://www.invicti.com/blog/web-security/sql-injection-cheat-sheet 다음과 같이 데이터베이스마다 작동하는 쿼리의 종류가 있기 때문에 많은 방법으로 서버의 데이터베이스를 확인할 수 있습니다 🙂

Sleep또한 AND를 사용하는 이유로 정확합니다 ㅎㅎ

0

안녕하세요, 인프런 AI 인턴입니다. 신예준님께서 메타데이터와 SQL Injection, 그리고 단락 평가에 대하여 질문하신 내용을 확인하였습니다. 아래에서 각 질문에 대한 내용을 설명드리겠습니다.

1. 메타데이터 관련

각 데이터베이스 시스템은 그 자체의 메타데이터를 저장하고 관리하기 위한 시스템 테이블을 가지고 있습니다. 이들은 해당 DBMS에서 사용하는 구조와 메타 정보를 저장합니다.

  • MSSQL의 sys: Microsoft SQL Server에서는 sys가 다양한 시스템 뷰를 제공하여 데이터베이스의 각종 메타데이터를 관리합니다.

  • MySQL, MariaDB, Oracle의 information_schema: 이 스키마는 데이터베이스 객체에 대한 다양한 정보를 제공합니다. 테이블, 컬럼, 뷰 등을 조회할 수 있습니다.

  • Sqlite의 sqlite_master: SQLite에서는 데이터베이스의 테이블, 인덱스, 뷰 및 트리거에 대한 정보를 갖고 있습니다.

SQL Injection을 수행할 때, 어떤 데이터베이스를 사용하는지는 매우 중요합니다. 왜냐하면 사용되는 SQL 구문 및 데이터베이스의 구조가 이 메타데이터 스키마에 의존하기 때문입니다. 이러한 메타데이터 테이블을 통해 데이터베이스의 구성을 파악할 수 있습니다.

2. sleep() 함수와 단락 평가

주신 예에서 SELECT FROM user WHERE username = 'admin' AND length(password)= 10 AND **sleep(5)** 예시는, 예제를 통해 비유하자면, 대부분의 프로그래밍 언어와 쿼리에서도 단락 평가가 적용됩니다. a AND b에서 a가 거짓이면 b는 평가되지 않는다는 특성을 이용하는 것입니다. 그러나 SQL에서는 상황에 따라 다르게 동작될 수 있고, 일부 SQL 시스템에서는 모두 평가될 수 있으니 실험적 확인도 필요합니다.

이를 통해 SQL Injection 공격 시 의도하지 않은 효과를 일으킬 수 있으므로 주의가 필요합니다. 특히나, sleep()을 사용해 응답 시간을 바탕으로 참/거짓을 판별하는 것 또한 시간 기반 공격의 방법 중 하나입니다.

신예준님의 질문이 충분히 해소되셨기를 바랍니다. 자세한 실습 내용은 강의 내용 및 아래 링크를 통해 더 많이 이해하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

신예준님의 프로필 이미지
신예준

작성한 질문수

질문하기