Basic Script Prac 문제 풀이

이정민·2024년 1월 10일

웹 해킹 공부 정리

목록 보기
14/18

실습 사이트에서 Basic Script Prac 문제풀이를 해보겠습니다.
해당 문제는 Reflected XSS 취약점을 찾아서 링크로 만들어 관리자가 링크를 누르면 Flag를 얻을 수 있는 문제입니다.

마이페이지를 보니 개인 정보 부분에 ssdd로 현재 접속한 id와 동일한 이름이 적혀 있는 부분을 확인할 수 있습니다. Burp Suite로 확인해서 입력한 그대로 출력되면 Reflected XSS를 의심해볼 수 있습니다.


이름 부분이 적는 그대로 바뀌는 것을 보니 Reflected XSS가 가능해보입니다. 그러면 alert을 시도해보겠습니다. 가만보니 현재 입력되는 곳이 input 태그인 것을 알 수 있습니다. 그러니 onclick 속성을 줘서 클릭하면 alert(1)이 실행되도록 해보겠습니다.

잘 실행되는 것을 보니 Reflected XSS가 확실히 가능하군요. 이제 이전에 포스팅한 DOM 객체를 이용해서 Flag Here이 적힌 부분을 변수로 가져온 후 링크로 만들어서 보내면 됩니다.

관리자 도구로 찾아보니 해당 부분은 input 태그에서 name속성에 "info"를 가졌고, Flag Here이 적힌 부분은 placeholder라는 속성입니다. Console에서 입력해 찾아보겠습니다.

name 속성은 여러 개 존재할 수 있으니 s를 붙여 getElementsByName으로 찾아본 결과 info라는 이름은 1개뿐이었습니다. 이제 [0]을 붙이고 placeholder 속성의 값을 얻기 위해 .placeholder를 붙여보겠습니다.

문제 없이 Flag Here이 나오는 것을 확인할 수 있습니다. 이제 얻은 정보가 Burp Suite에서도 잘 사용되는지 확인하겠습니다.


알아낸 DOM 객체값을 Burp Suite에 적용해보니 문제없이 잘 사용됩니다. 이제 공격 링크만 만들면 됩니다.

이미지를 만들고, 해당 이미지를 Flag가 있는 DOM 객체를 파라미터로 보내 RequestBin 사이트를 참조하도록 했습니다. 여기서 많이 헤맸었는데 URL이다보니 +는 띄어쓰기로 쓸 수 있습니다. 그런데 정작 진짜 +를 써야할 때 +를 URL인코딩해서 %2b라고 적어야했는데 그냥 +로 해버리니 오류가 났었습니다.

요청목록에 파라미터가 잘 찍혀있는 모습이 보입니다. 이제 해당 링크를 관리자에게 보내기만 하면 Flag를 얻을 수 있습니다.

이렇게 주소를 입력하면

진짜 Flag가 나와야하는데 이상하게 나오지 않습니다. 곰곰히 생각해보니 관리자가 일일이 클릭하지 않으니 onclick이 효과가 없나봅니다. 그러면 onfocus와 autofocus 속성을 넣어서 주소에 들어가자마자 발동되도록 다시 해보겠습니다.

성공적으로 Flag가 나온 것을 확인할 수 있었습니다.

profile
공부중

0개의 댓글