programing

DELETE... RETURNING을 사용하여 삭제된 행에서 정보 선택

iphone6s 2023. 6. 16. 21:33
반응형

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하위 쿼리에서는 허용되지 않습니다.

하위 쿼리에 넣을 수 있는 것은 다음과 같습니다.

SQL 주입에서 DELETE를 사용하려면 다중 쿼리를 허용하는 커넥터 인터페이스가 있어야 합니다. 그렇지 않으면 쿼리를 조작하여 DELETE가 먼저 되도록 한 다음 나머지 쿼리를 주석 처리해야 합니다.

언급URL : https://stackoverflow.com/questions/74390341/select-info-from-deleted-rows-using-delete-returning

반응형