DELETE... RETURNING을 사용하여 삭제된 행에서 정보 선택
저는 SQL 인젝션을 공부하고 있으며 현재 다음과 같은 문제로 어려움을 겪고 있습니다.다음과 유사한 질문이 있습니다.
SELECT first_name, last_name FROM users WHERE user_id = $id
그리고 SQL 코드를 주입하여 특정 행을 삭제해야 합니다.$id매개 변수
서버 DBMS가 MariaDB이기 때문에 저는 다음을 생각해냈습니다.
1
UNION
SELECT first_name,null
FROM (delete FROM users
WHERE user_id=7 RETURNING first_name)
선택한 부품과 삭제된 행을 반환 옵션을 사용하여 결합하는 것이 제 생각입니다.최종 쿼리는 다음과 같습니다.
SELECT first_name, last_name FROM users WHERE user_id = $id
UNION
SELECT first_name,null FROM (DELETE FROM users WHERE user_id=7
RETURNING first_name)
이것은 원래 쿼리된 정보와 함께 삭제된 정보를 결합하고, 여기서 핵심 아이디어인 DELETE를 실행할 수 있도록 합니다.나는 더 확실한 페이로드를 주입할 수 없었습니다.
1; DELETE FROM users WHERE user_id=7
어떤 이유에서인지 사용 중인 드라이버는 다중 쿼리 등을 허용하지 않는 것 같습니다.제가 알기로는 돌아오는 길은 되어야 하는데, 안 되고, 여러 번 수정을 해서 제가 모르는 제한이 있는지 없는지 모르겠습니다만, 누가 도와주실 수 있나요?
잘 부탁드립니다.
여부DELETE...RETURNING결과 집합을 반환할지 여부를 지정합니다. 하위 쿼리에서는 허용되지 않습니다.
마찬가지로, 결과 집합을 반환하는 일부 다른 문은 다음과 같습니다.CALL또는SHOW하위 쿼리에서는 허용되지 않습니다.
하위 쿼리에 넣을 수 있는 것은 다음과 같습니다.
- SELECT 문
- 공통 테이블 식 뒤에 SELECT 문이 있는 경우
- VALUE 테이블 값 생성자
SQL 주입에서 DELETE를 사용하려면 다중 쿼리를 허용하는 커넥터 인터페이스가 있어야 합니다. 그렇지 않으면 쿼리를 조작하여 DELETE가 먼저 되도록 한 다음 나머지 쿼리를 주석 처리해야 합니다.
언급URL : https://stackoverflow.com/questions/74390341/select-info-from-deleted-rows-using-delete-returning
'programing' 카테고리의 다른 글
| ORA-4031 "x바이트의 공유 메모리를 할당할 수 없음" 해결 (0) | 2023.06.16 |
|---|---|
| 보안 규칙으로 하위/필드 액세스 제한 (0) | 2023.06.16 |
| mariadb: 바인딩을 c-연결하는 방법 (0) | 2023.06.16 |
| 문자열에 숫자만 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.06.16 |
| 애플리케이션에서 안드로이드 웹 브라우저의 URL을 열려면 어떻게 해야 합니까? (0) | 2023.06.16 |