Похоже, вам не хватает файла cookie в части -u:
Cookie: PHPSESSID=cb55bd05e9618af173600ba757e996c1
Добавьте в свою команду следующие аргументы:
sqlmap --headers="User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" --cookie="PHPSESSID=cb55bd05e9618af173600ba757e996c1" -u 'http://xxx.xxx.2.9/mutillidae/index.php?page=user-info.php&username=a&password=b&user-info-php-submit-button=View+Account+Details' --level=5 risk=3
Уровень и риск экстремальны и вынуждают Sqlmap использовать почти все, что ему нужно, чтобы протестировать вашу клиентскую машину ... в этом конкретном контексте они вам действительно не нужны, но это хорошо, о чем нужно знать.
Если вы хотите указать параметр, который вы хотите проверить Sqlmap, используйте параметр -p, например:
-p username
Наконец, чтобы ответить на вторую часть вашего вопроса, когда вы должны использовать -r vs -u, это действительно выбор пользователя, вам может показаться более удобным сбрасывать вашу HTTP-информацию в файл и читать непосредственно с нее (основное использование -r), или вы можете обнаружить, что хотите больше контролировать то, что вы отправляете, и хотите настроить его в командной строке (основное использование -u)