참고 URL
- http://www.securiteam.com/unixfocus/6X00P0ANFM.html
- http://pjongy.tistory.com/131
- http://rootable.tistory.com/entry/addslashes-mysqlrealescapestring-%EC%9A%B0%ED%9A%8C
개요
magic_quotes_gpc 란?
- php에서 사용되는 설정값으로 값을 입력 받을 때 필터링이 필요한 문자 앞에 백슬래시(\)를 붙임
- 기본적으로 php.ini 파일에 ON으로 설정되어 있음
- GET, POST, COOKIE 데이터 내 해당 문자가 있을 경우 필터링하여 반환함.
- addslashes()와 동일
' (싱글쿼터) | \' |
" (더블쿼터) | \" |
\ (백슬래시) | \\ |
NULL (널바이트) | \ |
mysql_real_escape_string() 란?
- php 내장 함수로 SQL Injection을 방어하기 위해 사용됨
- DB로 전달되는 파라미터에 필터링이 필요한 문자가 입력된 경우 이스케이프 문자(백슬래시, \)를 붙여 공격을 방어
- 위의 magic_quotes_gpc와 비슷하지만 더 많은 문자열 치환
' (싱글쿼터) | \' |
" (더블쿼터) | \" |
\ (백슬래시) | \\ |
\x00 (널바이트) | \\x00 |
\n (line feed ) | \\n |
\r (carriage return) | \r |
\x1a (EOF) | \\x1a |
우회
원리
- 멀티바이트를 사용하는 언어셋 환경에서는 백슬래시(\) 앞에 %a1 ~ %fe 와 같은 값을 입력하면 %a1\를 하나의 문자로 취급함
- 따라서, 백슬래시(\)가 사라지므로 이스케이프 처리가 되지 않아 공격자의 의도대로 SQL Injection 등의 공격이 가능해짐
예 시 | ||
입력값 | magic_quotes_gpc / mysql_real_escape_string() | 결과값 |
%aa' or 1=1# | %aa\' or 1=1# | �' or 1=1# |
'Hacking > DB' 카테고리의 다른 글
[SQLi] Binary 코드를 이용한 Injection 우회 - MySQL (0) | 2018.03.14 |
---|---|
[SQLi] Mysql load_file injection (파일 다운로드 및 실행) (0) | 2018.03.12 |
[SQLi] SQL Injection 필터링 우회 (0) | 2018.02.06 |
[Oracle] 오라클(Oracle) 권한 상승 (0) | 2018.02.05 |