본문 바로가기

Computer Security/Web

MySQL Injection에서 LIMIT, quote(따옴표) 우회법

따옴표(캐릭터) 우회


만약 따옴표(')가 필터링이 되어있는데, 캐릭터를 비교를 해야한다던가.. 하는 상황이 있다면

ascii 를 사용하시면 됩니다.

ascii는 캐릭터를 숫자로 바꿔주는 방식이므로, ascii(a) = 97 과 같은 형태로 따옴표없이도 비교할수 있습니다.



LIMIT 우회


인젝션을 할때 LIMIT이 필터링 되어있으면 상당히 걸리적거립니다.

그때 LIMIT을 우회하는 방법은, max(), min(), group_concat()을 사용하시면 됩니다.


사용법은 select max(컬럼) from ~~~ , select group_concat(컬럼) from ~~~ 와 같습니다.

max,min은 예상하시다싶이, 결과값중 가장 높은 줄 하나, 낮은줄 하나만 불러오는것이구요.


group_concat()을 이용해서 불러오면, 모든 레코드의 해당 컬럼값들이 하나의 스트링으로 붙어서 나옵니다.


"[첫번째 컬럼값],[두번째 컬럼값],..." 이런식으로 결과값이 나옵니다.


이를 이용해서 LIMIT 우회가 가능합니다



스트링 우회


따옴표나, admin, "." 등이 필터링이 되어있는데, 스트링을 꼭 써야 하는 상황이라면,

0x (hex)를 이용하시면 됩니다.

sql에서는 0x?????? 가 있으면 스트링으로 인식을 합니다.


예를 들어서 "admin"을 hex형식으로 바꾸면 "0x61646d696e" 이 됩니다.

즉, " select 'admin' " 대신 " select 0x61646d696e" 을 사용할수 있는거죠.