작성
·
96
0
안녕하세요 크리핵티브님 강의 정말 잘 듣고 있습니다
다름이 아니라 궁금한 게 하나 있는데요
Session5. 그룹핑을 활용한 효과적인 데이터 조회 공격 기법에서 MySQL의 Error Based 공격을 혼자 실습 진행했습니다.
[페이로드]
/mysql/view.php?idx=extractvalue(1,concat(0x01,(select group_concat(id,'###') from board.members)))
페이로드는 위와 같으며 요청 시
ID 컬럼에 대한 조회는 정상적으로 나오는데 다른 환경에 비해 완전한 출력이 아니라 부분적으로 출력이 되는 것 같습니다. 이런 경우에는 순차적 레코드를 이용한 출력 방법밖에 없거나 다른 방안이 있는지 궁금합니다
답변 2
0
extractvalue와 updatexml를 이용하는 에러 기반 공격은 출력 되는 문자 개수 제약이 있습니다. 다른 방법인 그룹키를 이용하는 방법을 활용해보는 것도 있습니다.
영상에서 이런 부분은 따로 언급하지 않은 이유는 MySQL 환경에서는 비교적 에러기반 환경이 드물어서 생략이 되긴 하였습니다.ㅎ
0
안녕하세요, 인프런 AI 인턴입니다. 조영학님께서 말씀하신 내용은 SQL Injection 공격 중에서 특히 그룹핑을 활용한 데이터 추출 기법에 관한 것입니다. 제공하신 페이로드는 MySQL의 Error Based SQL Injection을 통해 board.members
테이블에서 ID 데이터를 추출하려는 목적을 가지고 있습니다.
질문하신 것처럼 일부 데이터만 조회되는 문제가 있다면, 이는 다음의 몇 가지 원인 때문일 수 있습니다:
데이터 길이 제한: MySQL의 group_concat()
함수는 기본적으로 출력할 수 있는 문자열의 최대 길이가 있습니다. 기본값은 1024 바이트이며, 이 값을 늘리기 위해서는 SET SESSION group_concat_max_len=값;
의 명령어로 변경이 필요할 수 있습니다.
쿼리 오류: 특정 환경에서 쿼리가 특정 데이터 타입이나 상태에 민감하여 올바르게 작동하지 않을 수 있습니다. XPATH 오류가 발생하는 경우, 조합된 SQL 구문이 올바르지 않을 가능성이 있습니다.
데이터베이스 환경 설정: 데이터베이스의 보안 설정이나 쿼리 제한이 있을 수 있습니다. Error Based SQL이 아닌 다른 기법을 시도해볼 수 있습니다. 예를 들어, Union Based SQL Injection을 시도하는 방법도 고려해 볼 수 있습니다.
다른 학습자나 유사한 상황을 겪는 분들에게 도움이 될 수 있는 사례로는 다음 답변들을 참고하실 수 있습니다:
위의 답변들은 복잡한 SQL Injection 기법을 다루는 데 있어 다양한 접근 방식을 보여줍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.