When dealing with C, it is good to learn how to use the manual pages in the terminal. Here is the entry for strcat.
DESCRIPTION
The strcat() and strncat() functions append a copy of the
null-terminated string s2 to the end of the null-terminated
string s1, then add a terminating `\0'.
That's one problem. You need handSorted to be null terminated.
char *handSorted = malloc(strlen(hand)+1);
handSorted[0] = '\0';
strcat(handSorted, hand[2]);
But there is still a problem. hand[2] is a single character, and strcat() expects a character pointer, AKA a string. So you need to pass it the address of a character using the 'address-of' operator - the &. Like this.
char *handSorted = malloc(strlen(hand)+1);
handSorted[0] = '\0';
strcat(handSorted, &hand[2]);
I think that is what you we're after.