DongDD's IT

[webhacking.kr] Level 52 본문

Wargame/webhacking.kr

[webhacking.kr] Level 52

DongDD 2017. 12. 2. 15:18

[webhacking.kr] Level 52



문제에 들어가니 Header injection이라는 말과 클리어 조건이 써있었다. id는 $_GET[id]를 통해 설정되고 이것을 이용해 헤더인제셕으로 id=Dongd 쿠키를 생서하면 클리어되는 조건인 것 같았다. GET[id]로 헤더인젝션을 해서 id=Dongd 쿠키를 생성하라고 되어있는 것을 보아 GET방식으로 id를 넘겨받는 것을 알 수 있었다. '헤더생성'이라는 버튼을 클릭해보았다.



헤더생성을 누르니 자동으로 GET방식으로 id변수를 넘겨주었다. 아마 이 GET방식으로 전송하는 것을 수정해 Header를 조작하여 id=Dongd 쿠키를 생성하면 통과할 것 같았다.



Burp를 통해 GET방식을 통해 전송한 것을 보니 Response 헤더에 id: Dongd로 출력되는 것을 보아 내가 전송한 것이 Response 헤더에 그대로 다시 오는 것을 알 수 있었다. 그렇기 때문에 Header Injection, CRLF Injection이 가능할 것 같았다.

%0D(Carriage Return), %0A(Line Feed)와 Set-Cookie를 이용하면 원하는대로 쿠키를 생성할 수 있다.


ref) HTTP 응답분할(CRLF)http://dongdd.tistory.com/52


처음에 헤더 인젝션을 통해 쿠키를 생성하기 위해 ?id=Dongd%0D%0A%20Set-Cookie:id=Dongd를 넣어보았다. 쿠키로 id를 생성하라고 되어있었기 때문에 이렇게 해보았다. 아무일도 일어나지 않았다. 처음에 문제를 봤을 때 clear:Dongd라는 조건을 맞추어야 하는지 clear:Dongd라는 조건을 맞추어야 하는지 애매했었다. 그래서 이번에는 clear=Dongd를 이용하기로 했다.

?id=Dongd%0D%0A%20Set-Cookie:clear=Dongd를 이용해 시도해보았지만 역시 아무일도 일어나지 않았다.


Set-Cookie를 이용해 여러가지 시도를 해보다가 Response Header에 id: Dongd라고 출력되는 것을 보고 감을 잡을 수 있었다. CRLF를 이용해 clear: Dongd를 추가해주면 될 것 같았다. clear:Dongd를 추가해주니 Response헤더에 clear: Dongd가 생기고 문제에 통과할 수 있었다.







**************     Answer & Flag     **************




처음에 id=Dongd라는 쿠키를 추가해주면 된다고 생각해서 Set-Cookie를 이용했지만 실패했고 해결한 방법에서도 Set-Cookie를 썼지만 사실 이게 필요없던 것이었다. 그냥 ?id=Dongd%0D%0Aclear:%20Dongd만 GET방식으로 넘겨줘도 문제에 통과하는 것을 볼 수 있었다.

클리어 조건 두개(id: $_GET[id], clear: Dongd)만 써놨으면 문제 이해가 더 쉬웠을 것 같은데 '헤더인젝션을 통해 id=Dongd 쿠키를 생성하세요.'라는 말때문에 혼동이 많았다.

쿠키를 생성하라는 말에 Set-Cookie에 너무 집착을 했던 것 같다. 결론적으로는 Set-Cookie를 쓰지 않아도 되는 문제인 것 같다. 답은 의외로 간단했지만 멀리 돌아가서 푼 것 같은 느낌이 들었다.

'Wargame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] Level 51  (0) 2017.12.20
[webhacking.kr] Level 58  (0) 2017.12.19
[webhacking.kr] Level 10  (0) 2017.11.19
[webhacking.kr] Level 3  (0) 2017.11.11
[webhacking.kr] Level 11  (0) 2017.09.30
Comments