php exec 예제

또 다른 유사한 기능은 system()입니다. system() 기능은 에코 나 인쇄를 사용하지 않고 직접 출력을 표시합니다. 이 예제에서는 ls 명령을 다시 실행합니다. 우리가 슈퍼 세트 언어인 언어를 만들고 싶다고 상상해 보십시오. 즉, 언어는 PHP가 하는 모든 작업을 지원할 뿐만 아니라 몇 가지 추가 구문도 지원합니다. 작은 예는 다음과 같은 모든 PHP 핵심 함수와 마찬가지로 적당히 사용하십시오. 허용되는 데이터에 특별한 주의를 기울이고 exec에서 필터링되지 않은 사용자 제공 데이터를 피하십시오. 그러나 함수를 피하는 이유를 이해하지 않고 함수를 피하지 마십시오. 그것은 당신 또는 당신에게서 배울 사람들에게 도움이되지 않습니다.

다른 실행 함수, 특히 shell_exec() 및 system()이 있지만 크게 관련이 없습니다 – shell_exec(예: 앞에서 살펴본 백틱 연산자와 정확히 동일한 방식으로 작동합니다). 나는 두 개의 PHP 기능을보고 싶어 : eval 및 exec. 그들은 너무 자주 현명한 개발자 – 결코 사용 -이 버스 아래에 던져있어 나는 때때로 우리가 놓치고 얼마나 많은 멋진 응용 프로그램을 궁금해. 에서 윈도우 exec() 먼저 명령을 실행 cmd.exe를 시작합니다. cmd.exe를 시작하지 않고 외부 프로그램을 시작하려면 bypass_shell 옵션 세트를 사용하여 proc_open()을 사용합니다. shell_exec() 함수는 exec()과 유사하지만 대신 전체 결과를 문자열로 출력합니다. 의 또 다른 jaded 핵심 기능을 살펴 보자: exec. 아마도 더 많은 심지어 eval보다 비난, exec는 보편적으로 더 모험 개발자를 제외한 모든 에 의해 비난된다. 그리고 나는 이유를 궁금해해야합니다.

놀랍게도, 많은 PHP 개발자가 이것을 알고 있지만, PHP는 백틱 (` )의 내용을 쉘 명령으로 실행합니다. 반환 값: 오류가 발생한 경우 이 함수는 실행된 명령 또는 NULL을 반환합니다. 이러한 명령은 모두 표준 유닉스 상자에서 사용할 수 있습니다. 가동 시간은 일반적으로 한 줄만 반환하므로 인쇄 exec() 또는 passthru()가 사용되는지 여부는 중요하지 않습니다. 우리는 모든 준비가 인쇄 출력을 보았다하지만 난 인쇄 출력에 대한 자세한 설명할 수 있습니다. exec() 함수 출력 또는 반환은 에코로 인쇄할 수 있지만 인쇄된 부분은 마지막 줄에 불과합니다. 그래서 멀티 라인 출력에서 우리는 에코와 출력을 볼 수 없습니다 . 전체 출력을 보려면 아래에 설명 될 system() 함수를 사용해야합니다. 나는 이 사람들을 듣고 즉시 eval과 exec을 기각하는 대신, 안전하게 사용하는 방법을 배우는 것이 좋습니다.

피해야 할 중요한 것은 필터링되지 않은 사용자 제공 입력으로 사용하는 것입니다. 이 시리즈의 1부에서는 웹 셸이 무엇인지, 공격자가 웹 셸을 사용하려고 하는 이유를 살펴보았습니다. 이 시리즈의 2부에서는 PHP 프로그래밍 언어로 웹 셸의 몇 가지 구체적인 예를 살펴보겠습니다.

Posted in Uncategorized