정보 · 테크
형변환 (cast, convert) 함수를 이용한 Blind SQLi
시간이 많이 흘러서 SQL Injection 은 올드한 주제가 되어 버렸습니다.
그래서 제가 알고 있던 매우 특이한 방법의 필터링 우회 방법을 공유하고자 합니다.
그 방법은 바로 형변환 함수로 자료형을 변환하는 것 입니다.
이 논의는 mysql 의 문자열이 길이가 늘어날 수 없는
정적 자료구조 이기 때문에 유효합니다.
바로 한 가지 예를 들어보겠습니다.
- select convert('admin',binary(1));
위의 쿼리는 문자열 abc 를 길이가 1인 binary 자료형으로 변환하면서
mid('abc', 1, 1) 와 유사한 효과를 내게 됩니다.
- select convert('admin',binary(1))='$q'
이제 $q 의 자리에 문자를 무작위 대입하여 첫번째 글자인 a 를 알아낼 수 있습니다.
- select convert('admin',binary(2))='a$q';
첫번째 글자를 알고 있기 때문에 binary(2) 로 형변환 후
두 번째 글자를 알아낼 수 있습니다.
이 과정을 반복하면 모든 글자를 알아낼 수 있습니다.
위와 같은 방법은 convert 함수 뿐만 아니라
유사한 기능을 제공하는 cast 함수나 weight_string 함수를 이용해서도 가능합니다.
cast, weight_string 에 대해서는 레퍼런스를 참고하여 직접 해보신다면 많은 도움이 될것 입니다.
이글을 읽어주신 여러분께 도움이 되셨기를 바랍니다. 감사합니다!
#cast
#sqli
#convert
#weight_string
작성자 정보
댓글
0