HackCTF Web의 세 번째 문제 Button이다.
문제 링크: http://ctf.j0n9hyun.xyz:2026
문제를 보면 아래와 같이 버튼을 누르면 플래그가 출력되게 하면 된다고 적혀 있다.
페이지 소스를 살펴본다. 저번에 살펴본 Web#2 문제에서는 GET 방식을 통한 데이터의 전송을 살펴봤다. 혹시나 해서 저번 문제의 링크를 걸어 두었다. 이번 문제에서는 POST 방식을 통해 서버에 데이터를 전송하는 것을 확인할 수 있다.
POST 방식은 사용자의 입력을 HTTP request BODY 부분에 넣어서 전송한다. 이 때문에 HTTP request header의 Content-type에 데이터 타입이 표시되고, 전송하고자 하는 데이터 타입을 적어줘야 한다.
1. Default: application/octet-stream
2. 단순 txt일 때: text/plain
3. 파일일 때: multipart/form-data
위와 같이 Content-type을 명시해야 하며, 보통 작성하지 않는 경우는 Default로 세팅된다.
1번은 GET 방식과 마찬가지로 key-value 쌍으로 데이터를 넣고, 두 개 이상의 데이터가 들어갈 경우 &를 쓴다.
2번은 BODY에 단순 txt를 넣을 때 쓴다.
3번은 파일 전송을 할 때 보통 많이 쓰고, HTTP BODY 부분에는 파일의 바이너리 데이터가 들어있다.
다시 페이지 소스 부분으로 돌아가 보자. button이라는 파라미터를 이용해 button value 값이 전송된다. 이 문제에서 "아래의 버튼으로 플래그를 출력하게 해 줘!"라고 되어있다. 따라서 우리가 원하는 value 값을 flag로 수정해 주자.
바꾼 후 버튼을 눌러보면 플래그가 출력되는 것을 볼 수 있다.
마찬가지로 50점인 만큼 쉬운 문제였다고 할 수 있다.
[HackCTF-Web#6] Read File - 100 points (0) | 2021.03.23 |
---|---|
[HackCTF-Web#5] Guess me - 100 points (0) | 2021.03.02 |
[HackCTF-Web#4] 보물 - 100 points (0) | 2021.01.24 |
[HackCTF-Web#2] Hidden - 50 points (0) | 2020.12.31 |
[HackCTF-Web#1] / - 50 points (0) | 2020.12.31 |
댓글 영역