SlowTurtle_

천천히 그러나 끝까지 완주

728x90

wargame 24

[Dreamhack] DOM XSS

[Dreamhack] DOM XSS 우선 둘러보는데 평소와 다른 flag를 입력할 수 있었다. vuln?param=#dreamhack 그래서 vuln을 들어가보니 이곳부터 #을 사용하고있는 것을 볼 수 있었다. 그래서 우선 vuln코드를 봤다. {% extends "base.html" %} {% block title %}Index{% endblock %} {% block head %} {{ super() }} {% endblock %} {% block content %} {{ param | safe }} {% endblock %} 처음에 핵심을 잘 모르겠어서 다시 강의를 봤다. DOM XSS는 브라우저 단에서 자바스크립트로 인해 발생하는 취약점을 이용함임을 다시 짚고 생각을 해봤다. 따라서 저 scrip..

[Dreamhack] Relative Path Overwrite Advanced

[Dreamhack] Relative Path Overwrite Advanced 바뀐 부분만 좀 봤더니 var url =~ 과 if절에 filter !==가 filter ===로 바뀌었다. url변수에 새로운 url을 받아오는 것을 알 수 있었고 filter가 undifined되면 바로 nope !!을 출력한다는 것을 알았다. var filter = ["script", "on", "frame", "object"]; fiter.js는 동일하게 script, on, frame, object로 동일했다. advanced에서 핵심은 filter.js를 어떻게하면 발동하지 않고 지나갈까이다. 상대경로니 처음에 학습했던대로 /vuln.php/;alert(1);// alert(1)을 하고 뒷 부분의 자바스크립트를 주..

[Dreamhack] Relative Path Overwrite

[Dreamhack] Relative Path Overwrite 소스코드부터 분석해보자. Relative-Path-Overwrite Home Vuln page Report 위는 index.php이다. page파라미터를 받아 php파일을 include해주는데 .., :, /문자를 필터링하여 LFI공격을 막는다는 것을 알 수 있다. 위는 vuln.php이다. 우선 param이라는 파라미터에 검사하는 키워드가 없다면 pre태그 내에서 innerHTML로 삽입된다. 또한 ' 을 공백으로 replace한다. 따라서 자바스크립의 템플릿 리터널을 벗어날 수 없다는 것을 알 수 있다. 만약 filter.js를 피할 수 있다면 필터링을 우회할 수 있다. 한가지 더 짚어야할 것은 filter.js는 상대주소로 로드되고 있..

[Dreamhack] CSS Injection

[Dreamhack] CSS Injection 코드가 너무 길어서 하나 하나 필요한 부분만 첨가하기로 했다. 우선 로그인하는 부분만 보면 guest로 하고싶은 욕구를 참지 못하고 guest : guest로 가입했다. guest로 로그인 후 메인 페이지를보니 Private memo Service라는 문구를 보니 id마다 memo를 별개로 하겠구나 라는 생각이 들었고 그럼 flag는 admin으로 로그인한 memo에 있겠구나 생각했다. # Add FLAG execute( 'INSERT INTO memo (uid, text)' 'VALUES (:uid, :text);', { 'uid': adminUid[0][0], 'text': 'FLAG is ' + FLAG } ) 이 코드를 보면 uid, text 그러니까..

728x90