mysqli_real_escape_string 취약점

mysqli_real_escape_string()함수에 취약점이 있는 것으로 알고있습니다. %aa'을 입력하면 %aa'이 되는데, utf-8로 인코딩을 할 경우 %aa\가 멀티바이트인 한 문자로 인식하는 것으로 알고있습니다. 이 문제에서는 mysqli_query($conn, "set names utf8")로 미루어 보아 utf-8로 인코딩하는 작업을 거치는 것같습니다. 그런데 왜 %aa' or id=0x6775657374#와 같은 풀이법은 풀리지 않는건가요??

(버프스위트로 %의 url 인코딩되어 %25aa로 바뀌는 것을 수정하면서 리퀘스트를 보냈음에도 되지 않습니다.)
(정석 풀이법으로는 풀었습니다. 그러나 해당 방법으로는 왜 풀리지 않는 건지 모르겠네요)

#취약점 #질문 #mysql #utf-8 #login_filtering
작성자 정보
답변 1
hwr
대표 업적 없음

해당 취약점은 mb_convert_encoding 등의 함수로
멀티바이트(EUC-KR,EUC-JP 등)를 유니코드(UTF-8)로 변경할 때 일어나는 취약점입니다.

유니코드로 변환할때 %aa\를 멀티바이트로 이루어진 데이터로 혼동해서 한글자로 처리하는 원리입니다.

이 문제같은 경우 mb_convert_encoding 함수가 없기때문에 해당 취약점을 사용할 수 없습니다.
따라서 sql 인젝션이 아닌 다른 방법을 사용해야 합니다.

2024.04.14. 14:13
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기