2021/01/05 - [프로젝트/DVWA 실습] - DVWA 실습 #3 - Command Injection
문제 해결 방법
Medium 단계에서는 '&&'과 ';'만 필터링하고 있다. 하지만 '&', '||', '|' 등 이 필터링을 우회할 수 있는 문자는 많기 때문에 다른 문자를 입력해서 어렵지 않게 우회할 수 있다.
결정적으로 str_replace() 함수를 이용하여 '&&'를 ''로 치환하는 과정을 단 한번만 반복하고 있기 때문에 이는 '&&&'을 '&'으로 치환하는 불완전한 연산을 수행하게 된다. 이 '&' 문자는 해당 명령어를 백그라운드로 실행하라는 명령이기 때문에 추가적인 명령어를 실행할 수 있다.
이를 방지하려면 지난번 워게임 풀이에서 언급했듯이 str_contains() 함수를 이용하여 아직 치환 대상 문자열에 아직 치환할 문자열이 남아있는지 검사하면서 반복문을 통해 완전히 치환해줘야 한다. 하지만 '&&'를 ''으로 치환하는 이상 '&'를 막을 방법은 없기 때문에 '&&' 대신 '&'를 치환하도록 수정하는 것이 더욱 바람직할 것이다.
'프로젝트 > DVWA 실습' 카테고리의 다른 글
DVWA 실습 #4 - CSRF (0) | 2021.01.06 |
---|---|
DVWA 실습 #3-3 - Command Injection(high) (0) | 2021.01.06 |
DVWA 실습 #3-1 - Command Injection(low) (0) | 2021.01.05 |
DVWA 실습 #3 - Command Injection (0) | 2021.01.05 |
DVWA 실습 #2-3 - Brute Force(high) (0) | 2021.01.04 |