add_image_size() to crop images into squares?

If you pass true for the last $crop argument then so called “hard” crop mode is used. This will make WP produce results at exact size specified, except few edge cases (if image uploaded is smaller than specified size for example).

Note that original image is still retained as is. If you need to actually modify originals as well — that is out of what WP native sizes functionality is intended for, will have to do that with custom code.