inflearn logo
강의

Khóa học

Chia sẻ kiến thức

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

169

pminho68647

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

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

기존 쿼리는 `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가 로그인이 되는 것 입니다 🙂

0

pminho68647

감사합니다!

0

communityai8509

안녕하세요, 인프런 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과 해당 문제 해결에 대한 추가 설명

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

인증 후에도 동일 메시지가 보이네요

0

71

2

CRLF Injection 문제

0

87

2

discord email 인증

0

70

2

CRLF 질문 있습니다

0

71

2

Dom clobbering 관련 문의

1

97

2

디스코드 트랙 관련 문의

0

68

1

백틱 사용 이유가 뭐에요?

0

82

2

SQLi-WAF-5 강의

0

70

2

미션 어떻게 하는 거에요?

0

78

1

XSS 1번문제 질문

0

89

2

xss_WAF_4가 안 됩니다

0

75

2

백슬래시에 관하여

0

55

2

공백 우회 관련 질문 있습니다

0

86

2

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

0

57

2

XSS-WAF-4 문제 질문

0

89

2

디스코드 이메일 인증 문의드립니다

0

577

2

KnockOn에 접속할 수 없습니다

0

109

2

SQL Injection - DB 질문

0

85

2

XSS-WAF4 문제풀이

0

98

2

디스코드에 들어가지지 않습니다

0

144

2

SQL Injection 실습

0

222

2

60번 게시글 질문

0

113

2

실습 내용에 nc도 나오는것 같은데 nc는 알아서 하는건가요?

0

115

2

현재 강의 DB접속 저희는 어떻게 하나요?

0

83

2