I am almost sure it's suspending because the shellcode is supposed to print a string.Instead the program just hangs
I overwrote the return address in my own application to that of my own shellcode. The jmp 0x7fffffffdbc7
is the first instruction it encounters.
After it jumps to 0x7fffffffdbc7 it calls the address right below the first instruction which is supposed decrement the stack, and then push the string located at 0x7fffffffdbcc at the top, before setting control flow to 0x7fffffffdbb2 ( instead of a return address I pushed the address of the string)
(gdb) x/20i $rip
=> 0x7fffffffdbb0: jmp 0x7fffffffdbc7
0x7fffffffdbb2: pop rcx
0x7fffffffdbb3: xor eax,eax
0x7fffffffdbb5: mov al,0x4
0x7fffffffdbb7: xor ebx,ebx
0x7fffffffdbb9: inc ebx
0x7fffffffdbbb: xor edx,edx
0x7fffffffdbbd: mov dl,0xf
0x7fffffffdbbf: int 0x80
0x7fffffffdbc1: mov al,0x1
0x7fffffffdbc3: dec ebx
0x7fffffffdbc5: int 0x80
0x7fffffffdbc7: call 0x7fffffffdbb2
0x7fffffffdbcc: rex.W
0x7fffffffdbcd: gs ins BYTE PTR es:[rdi],dx
0x7fffffffdbcf: ins BYTE PTR es:[rdi],dx
0x7fffffffdbd0: outs dx,DWORD PTR ds:[rsi]
0x7fffffffdbd1: sub al,0x1f
0x7fffffffdbd3: ja 0x7fffffffdc44
0x7fffffffdbd5: jb 0x7fffffffdc43
Here's what happens when i actually run the exploit
(gdb) nexti
0x00007fffffffdbc7 in ?? ()
(gdb) nexti
^C
Program received signal SIGINT, Interrupt.
0x00007fffffffdbc1 in ?? ()
The program hangs and i have to exit out manually before it transfers control to a completely random instruction.