정보보안공부
[Root-Me] SQL injection - Authentication - GBK 본문
문제를 푸려고 봤더니 중국어 할수있냐는 문장이랑 GBK를 검색해보니 UTF-8처럼 중국어의 인코딩문자임을 알게되면서 멀티바이트를 이용해 푸는 문제라는 것을 알게됬다.
멀티바이트를 이용한 싱글쿼터 우회는 select * from 테이블 where 컬럼='값' 형태에서 값에 싱글쿼터를 이용한 인젝션 구문을 삽입(' or '1'='1) 할 경우 select * from 테이블 where 컬럼='값' or '1'='1' 형태가 된다. 이때 서버측 코드에서 싱글쿼터에 대해 이스퀘이프 처리를 하고있을 경우 select * from 테이블 컬럼='값\' or \'1\'=\'1'로 구문이 작성되어 구문 실행이 되지 않는데 멀티바이트와 이스케이프 문자가 만나게되면 2개를 하나의 문자로 취급하게되어 이스케이프 역할을 하지 못한다.
멀티바이트를 사용하는 언어셋 환경에서는 백슬래시 앞에 %a1 ~ %fe 의 값이 들어오면 %a1\ 가 한개의 문자처럼 취급되면서 백슬래시를 먹어버린다.
[인젝션 구문]
=> ' or 1=1--
[멀티바이트를 이용한 인젝션 구문]
=> %af' or 1=1--
위 구문을 입력했을 때 '(싱글쿼터)가 이스퀘이프 처리되어 백슬래시 처리가 된다면 %af\' or 1=1 형태가 되는데 %af\가 하나의 문자로 인식되어 싱글쿼터 사용이 가능함
'Web > RootMe' 카테고리의 다른 글
[Root-Me] SQL injection - File reading (0) | 2020.02.26 |
---|---|
[Root-Me] SQL injection - Time based (0) | 2020.02.26 |
[Root-Me] SQL injection - Error (0) | 2020.02.19 |
[Root-Me] SQL injection - Filter bypass (0) | 2020.02.18 |
[Root-Me] SQL injection - Blind (0) | 2020.02.18 |
Comments