:블라인드 SQL 인젝션 - 필드 내가 <code>ORDER BY</code> 절에이 블라인드 SQL 인젝션을 사용했다
(CASE WHEN 1 THEN col1 ELSE col2 END)
그것은이 같은 쿼리를 생성 할 것이다는 :
SELECT x FROM y ORDER BY (CASE WHEN 1 THEN col1 ELSE col2 END) ASC
이 주입 성공 및 I 흰색으로 ORDER BY 절에 모든 열 이름을 나열하십시오.
다른 엔드 필드에서 유사한 주입을 사용할 수 없습니다. 그것은 그것이 가능하고 그 들판들에 화이트리스트가 있어야하는지 궁금하게 남겨 뒀다.
나는 주사의이 종류를 시도했지만 성공하지 않은 :
SELECT x FROM y ORDER BY col1 (CASE WHEN 1 THEN DESC ELSE ASC END)
SELECT x FROM y ORDER BY col1 DESC LIMIT (CASE WHEN 1 THEN 1 ELSE 0 END), 0
SELECT x FROM y ORDER BY col1 DESC LIMIT 0, CAST((CASE WHEN 1 THEN 1 ELSE 0 END) AS SIGNED)
아마 나는 화이트리스트 또는 단지 안전을 위해 DESC/ASC
필드와 LIMIT
변수를 열거해야합니까? MySQL을 사용하고 있습니다. 어쩌면 이러한 주입은 다른 DBMS에서도 가능할 것입니까?