CTFlearn의 열번째 문제
이번엔 웹해킹 문제이다.
처음으로 나온 Medium 난이도의 문제인데
그렇게 어려운 문제는 아니다.
문제 설명을 읽어보면 웹사이트는 POST를 사용해 인증을 하는데,
어떤 사람이 사이트를 디페이스(변조) 했다고 한다.
그 상태에서 인증을 할 수 있겠냐고 물어본다.
주어진 문제페이지 주소로 접근하면
이렇게 하얀 바탕에 글씨만 나온다.
POST data가 제출되지 않았다는 문구이다.
문제에서 계속 언급되는 POST는 웹 서버에 클라이언트가 요청 패킷을 보낼때,
데이터를 함께 전송하기 위한 메서드이다.
네이버에 접속을 한다고 가정하면,
단순히 네이버 메인 페이지에 접속하는것은 GET 메서드를 이용해서 서버에 요청을 하고,
로그인을 하거나 댓글을 쓰는등 클라이언트의 데이터를 서버에 전달할 때
POST 메서드를 사용한다.
어떤 데이터를 서버에 전달해야하는지 확인하기위해
f12를 눌러 개발자도구로 웹 페이지의 소스를 살펴보았다.
username: admin | password: 71urlkufpsdnlkadsf
username과 password가 보이는것처럼 주석으로 들어가 있다.
이 정보를 POST 메서드를 이용해 서버로 전달하면 된다.
문제를 풀때는 Burp Suite라는 프록시 도구를 사용했다.
문제페이지에 접속할때 요청 패킷을 버프 스위트로 캡쳐하면
보이는것처럼 GET 메서드로 패킷을 보내는것을 볼 수 있다.
아까 그 패킷을 서버로 보내면
맨 처음봤던 화면이 이렇게 응답 패킷으로 돌아온다.
GET 요청패킷을 POST 패킷으로 바꾸려면
이렇게 패킷 맨 앞에있는 GET을 POST로 바꾸고,
전달할 데이터를 맨 아래쪽에 변수명=값 & 변수명 = 값 형태로 넣어주면 된다.
여기서 끝이 아니라
한가지 더 중요한 작업을 더 해줘야하는데
MDN Web Docs를 보면 자세히 나와있다.
&로 분리되고 = 기호로 키와 value를 이어주는 형태로 보내려면
application/x-www-form-urlencoded 라는것을 써야한다고 한다.
요청 패킷 헤더의 중간에
Content-Type: application/x-www-form-urlencoded 형태로 적어주면 된다.
완성된 POST 요청 패킷을 보내면
아까 봤던 문구가 아닌 플래그가 출력되는것을 볼 수 있다.
'워게임 > CTFlearn' 카테고리의 다른 글
[CTFlearn] WOW.... So Meta - 포렌식 / ExifTool (53) | 2022.08.14 |
---|---|
[CTFlearn] Binwalk - 포렌식 / HxD (46) | 2022.08.11 |
[CTFlearn] Reverse Polarity - 암호학 / Binary (46) | 2022.08.05 |
[CTFlearn] Wikipedia - OSINT (51) | 2022.08.01 |
[CTFlearn] Morse Code - 암호학 / 모스부호 (56) | 2022.07.28 |