Repeater(이하 리피터)를 우리말로 뭐라고 할 수 있을까?
재전송 정도로 바꿀 수 있을 것 같다.
말 그대로 가로챈 요청을 원하는 타겟에 수정하거나 그대로 재전송할 수 있는 도구이다.
Proxy에서 캡처한 요청을 필요에 따라서는 반복적으로 재전송할 수 있으며, cURL과 같은 command-line 도구처럼 요청을 만들 수도 있다.

Request List : 여러 요청을 동시에 관리할 수 있고, 복사하거나 그룹화할 수 있다.
Request Control : 요청을 보내거나, 취소하거나, 기록을 탐색할 수 있다.
Request and Response View : 캡처한 요청을 볼 수 있고 수정할 수 있다. 요청을 편집하고 보내면 응답을 확인할 수 있다.
Inspector : Raw editor보다 더 직관적으로 요청을 분석하고 편집할 수 있다.
Target : 캡처한 요청이 전송될 IP 주소 혹은 도메인을 지정할 수 있다. Proxy에서 캡처한 요청을 Repeater로 보내면 자동으로 채워진다.

캡처된 요청을 Send 버튼을 통해 보내면 응답을 확인할 수 있다. 이미지처럼 Connection 헤더를 open으로 변경하면 응답 헤더의 값이 keep-alive로 바뀐 응답을 얻을 수 있다.

리피터의 요청과 응답을 시각적으로 보고, 수정할 수 있다.
예를 들어 Request attributes 섹션에서는 검색할 리소스를 수정하거나 HTTP 메서드를 GET에서 다른 메서드로 변경한다던가, 또는 프로토콜을 HTTP/1에서 HTTP/2로 전환할 수도 있다.
Request Query Parameters : URL을 통해서 서버로 전송되는 데이터를 다룬다. 매개변수의 값을 변경할 수 있다.
Request Body Parameters : POST 요청에서 전송되는 데이터가 표시되고 값을 변경할 수 있다.
Request Cookies : 각 요청과 함께 전송되는 수정 가능한 쿠키 목록이 표시된다.
Request Headers : 모든 헤더에 접근해 수정할 수 있다.
Response Headers : 서버가 반환하는 응답의 헤더를 표시한다. 이는 수정할 수 없고, 응답을 받은 뒤에야 볼 수 있다.

숫자로 된 엔드포인트의 요청을 잡아서 리피터로 보낸다.
그냥 요청을 Send로 보내면 200 OK로 넘어갈테니 엔드포인트인 3을 통해서 에러를 내보자.

-1로 엔드포인트를 바꿔서 보냈더니 500 ERROR가 나왔다.

홈페이지의 html 코드인 것 같았는데 플래그가 나왔다.
같은 이치로 http://10.201.59.224/about/2의 요청을 캡쳐해서 에러를 내보자.

내리다보니 웬 쿼리가 적혀져있다. id = 2'인 것으로 보아 내가 입력한 값을 그대로 쿼리에 적고 있었다.
SQLi 취약점이 존재하는 것이다.
people 테이블에 있는 column을 확인할 수 있고 그렇다면 내가 검색하고 싶은 것을 검색할 수 있겠다.
/about/0 UNION ALL SELECT column_name,null,null,null,null FROM information_schema.columns WHERE table_name="people"
인젝션문을 이렇게 날려봤다. /about/0을 날린 것은 원래 쿼리에서 검색하는 것을 방지하도록 한 것이다.

모든 column이 아니라 하나만 나온다. 나는 모든 항목을 다 알고 싶다.
/about/0 UNION ALL SELECT group_concat(column_name),null,null,null,null FROM information_schema.columns WHERE table_name="people"
column_name을 group_concat을 통해서 보내면 하나의 출력에 모든 이름을 담을 수 있다.
그럼 table_name이 "people"인 모든 column_name값을 하나의 문자열로 출력한다.

id, firstName, lastName, pfpLink, role, bio, notes column을 얻었다.
챌린지의 목표가 DB에 저장된 CEO에 대한 notes를 찾는 공격이므로 notes를 확인하자.
CEO의 URL의 ID값이 1이므로 id = 1을 통해 검색해보자.
0 UNION ALL SELECT notes,null,null,null,null FROM people WHERE id = 1

플래그를 얻었다.