티스토리 뷰
반응형
PHP에서는 변수에 따로 Data Type을 지정하지 않는다.
그래서 위와같은 비교구문에서 취약점이 발생하기도 하는데,
gen_key()는 항상 다른 문자열 Key를 반환해주는 함수이다. 근데 내가 입력한 값과 그 반환된 Key가 같게 할 수 있을리가 없다. 무작위로 반환해주는 것을 무슨수로 맞춰..?
이 표를 보면 PHP에서 == 으로 비교를 했을 때 "php" 문자열과 TRUE 불린값을 비교하면 TRUE가 나온다.
또한 "php" 문자열과 정수 0을 비교해도 TRUE가 나온다.
여기서 "php"는 임의의 문자열이고 어떤 문자열이와도 TRUE, 0 둘중하나로 비교하게되면
결과값은 TRUE가 나온다는 말이다. 진짜 말도안되는 일이 벌어지는 것이다....
그래서 내가 $json->key에 TRUE 혹은 0으로 값을 넣어주기만 한다면 해당 검증은 우회가 될 것이다.
추가로 위 표에서 볼만한 내용은, ""랑 FALSE 혹은 0을 비교할 시 TRUE가 나온다는 점.
array()와 FALSE를 비교할 시 TRUE가 나온다는 점.
NULL이랑 FALSE를 비교할 시 TRUE가 나온다는 점이 있다.
반응형
'Web > Concept' 카테고리의 다른 글
[Concept] 멍청한 개발자의 필터링. (0) | 2019.07.19 |
---|---|
[Concept] 파일업로드 확장자우회 (0) | 2019.07.19 |
[Concept] PHP의 이스케이프 처리함수 목록 (0) | 2019.07.18 |
[Concept] PHP 백도어에서 자주사용하는 함수. (0) | 2019.07.17 |
[취약점 점검 실습] 파일업로드 취약점 실습(1) (0) | 2019.07.17 |