보호되어 있는 글입니다.
보호되어 있는 글입니다.
파일업로드 기능을 구현할 때 개발자는 취약점 방지를 위해 확장자에대한 제한을 거는 경우가 많다. 예를 들면, php, jsp, asp 확장자는 업로드할 수 없게 블랙리스트 필터링을 건다던지 jpg, jpeg, png 등의 이미지 파일만 업로드할 수 있게 화이트리스트 필터링을 건다던지 한다. 이 때 이 확장자를 우회하는 방법에 대해 몇가지 적어보겠다. 1. NULL Byte Bypass 예를 들면 webshell.php%00.jpg 와 같이 중간에 NULL Byte를 넣어주게 되면, NULL Byte는 문자열의 끝을 의미하므로 처리되는 파일명은 webshell.php가 되게된다. 2. HTML Encoding 잘 안되는 경우가 많은데 간단한 방법으로 webshell.ph%70 와 같이 HTML Encodi..
PHP에서는 변수에 따로 Data Type을 지정하지 않는다. 그래서 위와같은 비교구문에서 취약점이 발생하기도 하는데, gen_key()는 항상 다른 문자열 Key를 반환해주는 함수이다. 근데 내가 입력한 값과 그 반환된 Key가 같게 할 수 있을리가 없다. 무작위로 반환해주는 것을 무슨수로 맞춰..? 이 표를 보면 PHP에서 == 으로 비교를 했을 때 "php" 문자열과 TRUE 불린값을 비교하면 TRUE가 나온다. 또한 "php" 문자열과 정수 0을 비교해도 TRUE가 나온다. 여기서 "php"는 임의의 문자열이고 어떤 문자열이와도 TRUE, 0 둘중하나로 비교하게되면 결과값은 TRUE가 나온다는 말이다. 진짜 말도안되는 일이 벌어지는 것이다.... 그래서 내가 $json->key에 TRUE 혹은 0..
escape_string(string); real_escape_string(string); mysql_real_escape_string(string); → ' " \ \x00 \x1a(EOF) \n \r 에 대해서 이스케이프를 추가한다. addslashes(string) → ' " \ \x00 에 대해서 이스케이프를 추가한다. magic_quotes_gpc → GET, POST, COOKIE에 자동으로 addslashes()를 적용해준다. 대표적인 우회기법으로는 MultiByte Encoding이 있는데, 전제조건으로 GBK인코딩이 되어있거나, EUC-KR을 UTF-8로 인코딩하는 내용이 포함되어 있어야 한다. 원리는 %bf%27을 하게되면 %27이 %5c%27이 되는데, 이 떄 %bf%5c가 결합되면서..