Dyrandy

JustCTF2019 Ugly-Website (CSS Injection) 본문

CTF WriteUp

JustCTF2019 Ugly-Website (CSS Injection)

Dyrandy 2019. 12. 24. 01:56

오랜만에 CTF를 풀었는데 재밌는 내용을 봤다.

솔직히 내용은 그리 어렵지 않지만, CSS로 데이터를 훔칠 수 있다는 아이디어가 정말 신박했다.

 

먼저 문제를 살펴보면 위와 같다.

우리가 어떤 페이지의 css를 꾸미는 것이다.

(Flag가 2개 있는데, 두번째 파트는 시간상 자세히 보지 못했다)

 

asdasd asdasd를 입력해서 접속했다.

(무의미 한 값이다)

 

 

문제 페이지에 접근하면 위와 같이 나온다.

 

제일 먼저 소스코드를 확인해보면,

 

 

위와 같이 나오는데 핵심은 <code> <code>부분이 아닐까 싶다. 코드를 입력하면 운영자가 우리의 css를 평가한다고 한다.

 

간단한 테스트를 위해 위와 같이 css파일을 만들어 업로드 시켜보았다.

 

 

업로드를 시켰더니 URL주소를 주고 해당 URL주소에 접속해보면,

 

우리 들의 CSS가 그대로 있다.

그리고 적용된 모습을 확인 할 수 있다.

 

이제 코드를 넣고 평가를 해보았다.

 

 

퍙가하기를 누르면 Judge가 평가를 한다. 그리고 기다려야하는데, 그 이후에는 아무런 반응이 없다.

그럼 이를 통해 운영자의 code를 얻어야한다.

나는 XSS로 운영자 세션을 구하는 문제라 생각했는데, CSS Injection을 이용해서 푸는 문제였다.

 

 

CSS Injection에 대해 잘아는게 없어 검색을 많이 해보았다.

https://www.mike-gualtieri.com/posts/stealing-data-with-css-attack-and-defense

 

 

 

잘보면 우리가 원하는 태그와 태그의 attribute와 값을 갖고 올 수 잇다.

특히 잘 보아야하는 것은 ^= 부분이다. ^="a"를 한면 a로 시작하는 것을 찾는다.

Blind SQL Injection하는것 처럼 <code> 태그의 title을 하나하나 매칭 시켜서 뽑아오면 될 것 같다.

 

우리가 찾아야하는 값이다. <code title>부분이다.

테스트를 위해 위와 같이 css파일을 만들고, 개인 서버에 HTTP를 열어 로그를 보았다.

 

파일을 제출하고 운영자가 확인하기를 기다려 보니, <code>가 8로 시작하는 것을 알 수 있다. (다른 것들은 IP주소가 다르다)

 

 

이렇게 일일히 하나 하나 씩 해주면 810440929 값을 얻을 수 있다. (Captcha가 있어서 자동화를 할 수 없었다.... ㅠㅠ 그래서 하나하나 손으로...)

 

 

다 끝나면 위와 같은 결과를 얻을 수 있다.

'CTF WriteUp' 카테고리의 다른 글

Wacon 2022 - Kuncɛlan Write-up  (2) 2022.06.27
HKCert CTF 2021 - Cool Down (200 Points)  (1) 2021.11.18
WhiteHat CTF 2019 - The Camp  (0) 2019.09.30
FaceBook CTF (FBCTF) - Secret Note Keeper(XS-Search)  (0) 2019.06.04
FaceBook CTF(FBCTF) - PDFMe  (0) 2019.06.03
Comments