stabbish

:)
git clone https://git.sr.ht/~ashymad/stabbish
Log | Files | Refs | README | LICENSE

commit 6d7ea95206f370df80d8774856f81579dc5600cb
parent 6d82ae0f70fc61dbd592e4d721757c662358e4ac
Author: Szymon Mikulicz <szymon.mikulicz@posteo.net>
Date:   Fri,  3 Jul 2026 15:12:36 +0200

Sumthin

Diffstat:
Mmain.c | 18++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/main.c b/main.c @@ -5,6 +5,7 @@ #include <malloc.h> #include <sched.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <unistd.h> @@ -50,11 +51,20 @@ const size_t MAGICS_size = sizeof(MAGICS) / sizeof(MAGICS[0]); } int main(int argc, char **argv) { - int bbox, script, self; + int bbox, script, self, envfile; size_t self_size; unsigned char *self_map; checkerr(bbox = memfd_create("busybox", 0), != -1); + checkerr(envfile = memfd_create("envfile", 0), != -1); + dprintf(envfile, "export ENV; echo No payload present, starting shell."); + + char *envstr; + checkerr(asprintf(&envstr, "/dev/fd/%i", envfile), != -1); + setenv("ENV", envstr, 1); + + checkerr(asprintf(&envstr, "/dev/fd/%i", bbox), != -1); + setenv("BUSYBOX", envstr, 1); checkerr(write(bbox, _inc_busybox, _inc_busybox_size), != -1); @@ -88,11 +98,11 @@ int main(int argc, char **argv) { checkerr(write(script, &self_map[payload_i], payload_size), != -1); munmap(self_map, self_size); - char scriptarg[1024]; + char *scriptarg; if (tool) - snprintf(scriptarg, 1024, ". <(%s /dev/fd/%i)", tool, script); + asprintf(&scriptarg, ". <(%s /dev/fd/%i)", tool, script); else - snprintf(scriptarg, 1024, ". /dev/fd/%i", script); + asprintf(&scriptarg, ". /dev/fd/%i", script); char **newargv = malloc(sizeof(char *) * (argc + 4)); newargv[0] = "ash";