99class docker_process (pwnlib .tubes .process .process ):
1010 def __init__ (
1111 self , argv = None ,
12- container_name = None , user = None , work_dir = None , suffix = "" ,
12+ container_name = None , user = 1000 , work_dir = None , suffix = "" ,
1313 shell = False , executable = None , cwd = None , env = None , aslr = None , setuid = None , alarm = None ,
1414 ** kwargs
1515 ):
@@ -22,9 +22,8 @@ def __init__(
2222 work_dir = work_dir or tempfile .mkdtemp ()
2323 self .container_name = container_name
2424
25-
2625 docker_cmd = [
27- "docker" , "exec" , * ([ "-u" , str (user )] if user is not None else [] ), "-i" , "-w" , cwd or work_dir , self .container_name , "/bin/bash"
26+ "docker" , "exec" , "-u" , str (user ), "-i" , "-w" , cwd or work_dir , self .container_name , "/bin/bash"
2827 ]
2928 super ().__init__ (docker_cmd , ** kwargs )
3029
@@ -33,8 +32,8 @@ def __init__(
3332 kstr = k .decode ('latin1' ) if type (k ) is bytes else k
3433 with open (f"{ work_dir } /.pwnshop-env-var" , "wb" ) as o :
3534 o .write (v .encode ('latin1' ) if type (v ) is str else v )
36- self .sendline (f"read { kstr } < { work_dir } /.pwnshop-env-var; export { kstr } ; echo " )
37- self .readline ()
35+ self .sendline (f"read { kstr } < { work_dir } /.pwnshop-env-var; export { kstr } " )
36+ self .clean ()
3837 os .unlink (f"{ work_dir } /.pwnshop-env-var" )
3938
4039 assert not self .clean ()
@@ -60,6 +59,9 @@ def kill(self):
6059 def __exit__ (self , * args , ** kwargs ):
6160 super ().__exit__ (* args , ** kwargs )
6261 self .kill ()
62+
63+ def run_shell (self , command , ** kwargs ):
64+ return pwnlib .tubes .process .process (f"docker exec -u root { self .container_name } { command } " , shell = True ).readall ()
6365
6466class DockerEnvironment (Environment ):
6567 def __init__ (self , image , work_dir = None ):
@@ -82,7 +84,6 @@ def start(self):
8284 self .container = client .containers .run (
8385 img + ':' + tag ,
8486 'sleep 300' ,
85- user = "0" ,
8687 auto_remove = True ,
8788 detach = True ,
8889 cap_add = ["SYS_PTRACE" ],
0 commit comments