강의

멘토링

커뮤니티

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

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

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

Kỹ thuật tấn công tiêm nhiễm SQL và mã hóa an toàn do một chuyên gia hack mô phỏng giảng dạy: PHẦN 1

phân tích tấn công

쿼리 결과 오류

Đã giải quyết

Viết

·

313

·

Đã chỉnh sửa

1

image.png

코드는 이렇습니다

중간에 echo는 제가 찍어본 것이고

admin'-- 이렇게 입력하면

query : 'select * from member where id='admin'--' and pw='b59c67bf196a4758191e42f76670ceba''

쿼리는 이렇게 찍히는데

 

Fatal error: Call to a member function fetch_assoc() on a non-object in <b>C:\APM_Setup\htdocs\login\loginAction.php

 

결과값이 없다고 오류가 나버립니다.

image.png

mysql에서 직접 admin'-- 이렇게 넣어봐도 잘 나오는데...

 

뭐가 문제일까요?

 

+강의 뒷부분의 'or1=1-- 도 넣으면 에러납니다.

image.png

 

모의해킹인젝션

Câu trả lời 2

2

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

바로 다음 강의에 정답이 있었네요;;

mysql의 주석 --는 앞뒤로 공백이 존재해야한다

0

안녕하세요, 인프런 AI 인턴입니다.

Hyun Jo님이 제기하신 문제는 SQL 쿼리 작성 시 부적절한 주석 처리 때문에 발생할 가능성이 큽니다. 현재 사용하고 계신 쿼리에서 admin'-- 같은 입력이 주어지는 경우, SQL 주석으로 인해 쿼리의 나머지 부분이 무시되어, 의도치 않은 쿼리가 실행될 수 있습니다. 특히, PHP에서의 fetch_assoc() 함수가 호출되면서도 해당 객체가 반환되지 않은 상황은 query() 메서드가 실패했을 때 발생할 수 있습니다. 이는 query() 결과가 false일 경우에 발생하며, 보통은 SQL 문법 오류나 쿼리 실행 실패로 인해 query()가 실패하게 됩니다.

  • SQL 주석 문제:
    admin'--를 입력할 경우, -- 뒤의 내용은 SQL에서 주석 처리되어 무시됩니다. 따라서, SQL 쿼리가 select * from member where id='admin'까지만 실행되고, and pw='' 부분은 무시되는 상황이 발생할 수 있습니다. 이로 인해, 데이터베이스 쿼리가 실패하거나 예상 외의 결과가 반환됩니다.

  • 해결 방안:

    1. 준비된 쿼리를 사용하여 쿼리를 실행하면 SQL 인젝션 공격을 방지할 수 있습니다. PHP에서는 mysqliprepare() 메서드, 혹은 PDO의 prepare() 메서드를 사용할 수 있습니다.
    2. 사용자 입력을 받을 때 항상 입력값을 필터링하고 검증하여 이러한 문제를 사전에 차단해야 합니다. 일반적으로 데이터베이스와 상호작용 전 사용자 입력값을 mysqli_real_escape_string()을 사용하여 탈출 문자를 추가할 수도 있습니다.
  • 참고할 수 있는 유사한 게시물:

    1. SQL 인젝션 관련하여 질문드립니다.

해당 링크에서는 SQL 인젝션 공격의 원인 및 유사 사례에 대한 해결책을 포함하고 있습니다. 입력 값 필터링, 준비된 쿼리 사용 등 기본적인 보안 조치에 대한 설명이 포함되어 있습니다.

현재 상황에서는 데이터베이스 연결 및 쿼리 실행 중 문제 해결을 위해 쿼리 디버깅 및 준비된 쿼리 사용을 중점적으로 고려해 보세요.

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

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

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

Đặt câu hỏi