강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của pminho68647
pminho68647

câu hỏi đã được viết

Học hack web từ cơ bản đến trung cấp, tất cả trong một khóa học

Giải quyết cơ bản về SQL Injection

SQL Injection - Login

Đã giải quyết

Viết

·

105

0

ID 입력란에 페이로드(admin' AND 1=1 -- ) 삽입 시 정상적으로 플래그가 도출되었으나 ID에 'admin', PW 입력란에 페이로드(1' or 1=1 -- ) 삽입 시 플래그가 도출되지 않았습니다.

 

두번째의 경우

ID='admin'AND PW=' 1' or 1=1 -- ' 로 ID가 'admin'이고 PW가 쿼리로 인해 항상 참인데 왜 플래그가 도출되지 않는지 모르겠습니다.

모의해킹

Câu trả lời 2

0

knockOn님의 프로필 이미지
knockOn
Người chia sẻ kiến thức

기존 쿼리는 `SELECT* FROM user WHERE username = '{username}' AND password = '{password}' 이며, 질문자님과 같이 pw1' or 1=1 을 입력하게 되면,

```SQL

SELECT * FROM user WHERE username = 'admin' AND password = '1' or 1=1 --

```

이런 식으로 실행이 되고, 연산에서는 OR 보다 AND가 우선이기 때문에

```SQL

SELECT * FROM user WHERE (username = 'admin' AND password = '1') or 1=1 -- #FALSE

->

SELECT * FROM user WHERE FALSE or TRUE

->

SELECT * FROM user # 최종 실행 구문

```

이라는 쿼리가 실행되어, user테이블의 모든 데이터가 리턴값이 되고, 그중 첫번째 행에 있던 guest가 로그인이 되는 것 입니다 🙂

pminho68647님의 프로필 이미지
pminho68647
Người đặt câu hỏi

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. 박민호님.

SQL Injection을 사용하여 로그인 시도의 쿼리에 문제를 겪고 계신 것 같습니다. 두 번째 시도에서 플래그가 도출되지 않은 이유를 아시는 데 도움이 될 수 있는 몇 가지 요점을 설명드리겠습니다.

SQL Injection 문구 1' or 1=1 --을 비밀번호 필드에 사용하셨을 때 기대한 결과가 나오지 않는 이유는 여러 가지가 있을 수 있습니다.

  1. 쿼리의 형식 문제: SQL Statement의 전체적인 구문을 보시면 ID='admin' AND PW='1' or 1=1 --'가 됩니다. 이는 PW='1'이 참이 아니더라도 전체 조건이 참이 될 수 있지만, SQL 시스템에 따라 AND, OR 연산자의 평가 순서에 영향을 받을 수 있습니다. 또 간혹 뒤에 여분의 공백이 있거나 주석(--) 처리의 위치 등이 잘못 적용되면 예상치 않은 결과를 낼 수 있습니다.

  2. SQL 데이터베이스 설정: 데이터베이스가 복잡한 평가나 보안 측면에서 인젝션에 대해 견고하게 설계된 경우, 예상한 결과가 나오지 않을 수 있습니다. 만일 그런 경우라면, 데이터베이스가 고의적으로 잘못된 논리식을 예방하고 있을 가능성도 있습니다.

  3. 비밀번호 필드 처리 방법: 서버에서 비밀번호 필드를 다르게 처리하고 있을 가능성도 있습니다. 예를 들어, 비밀번호가 해시나 다른 방식으로 검증되고 있다면 단순히 SQL문 삽입만으로는 우회가 불가능할 수 있습니다.

  4. 보안 패치: 웹 애플리케이션이 특정 보안 패치를 통해 SQL Injection에 대한 방어 조치를 하고 있을 수 있습니다 (입력 값에 대한 검증, 파싱, 필터링 등).

각 상황에 따라 서버 또는 데이터베이스의 설정이 다르기 때문에, 위 설명에 도움을 주는 유사한 질문들을 참조하시면 좋습니다. 다음 게시물에서 관련된 내용을 확인하실 수 있습니다:
- SQL Injection과 해당 문제 해결에 대한 추가 설명

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

Hình ảnh hồ sơ của pminho68647
pminho68647

câu hỏi đã được viết

Đặt câu hỏi