'break' is the right keyword...code structure below, no custom query needed if used in a standard template.
<?php $posts_per_first_section = 6; //how many posts you want to show in the first section// if ( have_posts() ) : ?><!-- opening html for first loop --><?php /* Start the Loop */ while ( have_posts() ) : the_post(); //your output per post in the first section// //for example// get_template_part( 'template-parts/post/content', get_post_format() ); //check for 'break' out of first loop// if( $wp_query->current_post+1 == $posts_per_first_section ) break; endwhile; ?><!-- closing html for first loop --><?php //checking if there are more posts to show in second loop if( $wp_query->current_post > 0 && $wp_query->current_post+1 < $wp_query->found_posts ) : ?><!-- opening html for second loop --><?php while ( have_posts() ) : the_post(); //your output per post in the second section// //for example// get_template_part( 'template-parts/post/content', get_post_format() ); endwhile; ?><!-- closing html for second loop --> <?php endif; //end checking if there are more posts to show in second loop else : echo 'no posts found'; endif; ?>