php
-
[PHP] WAF Bypass : Non-Alphabets CodeStudy/Web 2021. 1. 11. 17:55
웹 서버의 권한을 얻기 위해 웹 쉘을 이용하는 경우가 많다. 이때, 해당 WAF에서 RCE를 유발할 수 있는 문자를 포함한 코드를 차단한다. RCE를 유발할 수 있는 코드의 예시를 들자면, 아래의 코드와 같이 원하는 인자로 원하는 함수를 실행할 수 있는 코드이다. 해당 코드에서 원하는 함수를 실행할 수 있는 이유는 PHP에서는 가변 함수의 개념을 지원하여 변수나 문자열을 이용하여 함수를 호출할 수 있기 때문이다. PHP 실행 함수 - system() - shell_exec() - eval() - exec() - passthru - etc... 공격자 마음대로 함수를 실행할 수 있다면 보안상 위험하기 때문에 아래 코드와 같이 특정 함수 이름 등을 필터링하여 방어할 수 있다. 이러한 필터링을 우회하기 위해서..
-
PHP 입력 길이 제한 우회Study/Web 2021. 1. 9. 01:48
# TetCTF 2021 _ HPNY (문제 참고) 해당 문제는 Command Injection 문제로, 읽어야하는 파일 이름의 길이가 'fl4g_here_but_can_you_get_it_hohoho.php' 로 상당히 길다. 그러나, 입력 값은 50미만으로 길이가 제한되어 있기 때문에 파일 이름을 그대로 입력할 수 없는 문제이다. 해당 부분의 소스 코드는 아래와 같다. $wl = preg_match('/^[a-z\(\)\_\.]+$/i', $_GET["roll"]); if($wl === 0 || strlen($_GET["roll"]) > 50) { die("bumbadum badum"); } eval("echo ".$_GET["roll"]."();"); 길이 제한을 우회하여 Flag를 얻기 위해서는 ..