보안 실습

[문제 풀이] Dreamhack CSRF-1

1학년 2024. 9. 9. 16:14

드림핵 CSRF-1 문제를 풀어보자

CSRF 문제 서버를 생서해 들어가면 다음과 같은 화면을 확인할 수 있는데 페이지를 하나씩 들어가보며 어떤 페이지들이 있는지 확인해보자.

 

<vuln(csrf) page>

파라미터 값으로 <script>alert(1)</script>가 작성되어 있는 것을 확인할 수 있는데

출력된 값을 확인해보면 꺽새<> 는 필터링되지않았지만 script라는 값은 *로 필터링된 것을 확인할 수 있다.

script 태그가 필터링되면서 alert(1)이라는 동작이 수행되지 않은 것이다.

-> xss에 대한 필터링이 적용되어있는 것을 확인

 

<memo>

memo에 들어가는 파라미터 값에 따라서 memo가 되는 페이지인듯하다.

 

<notice flag>

이 페이지는 코드를 확인해보았을 때

 

로컬호스트가 아닌 경우 -> 접근 제한

userid = admin이 아닌 경우 -> 접근 제한

1. 로컬호스트

2. userid=admin

-> flag를 기록

 

여기서 일반 이용자의 ip가 로컬호스트(127.0.0.1)가 될 수 는 없다.

-> 웹서버는 자기자신을 127.0.0.1로 바라보기 때문 (인터넷에 접속되어있는 자신의 ip는 127.0.0.1이 아님)

-> 그러면 요청을 보내는 주체가 자기자신(웹서버)이라면? 

 

<flag>

vuln 페이지의 파라미터 값으로 어떠한 값을 전송할 수 있는 페이지인 것 같다.

 

vuln 페이지에 csrf 공격 수행이 가능하기 때문에

/vuln 페이지 -> /notice_flag 페이지로 요청 (1번 로컬호스트 요청)

userid=admin (2번 userid=admin)

 

<img src = '/admin/notice_flag?userid=admin'>

img 태그를 이용하여 작성, 이미지의 링크 주소에 '/admin/notice_flag?userid=admin'를 입력하여 해당 페이지에 접속이 되도록 함.

 

처음에는 form 태그를 이용해서 작성해보고자 했는데 form 내부 데이터를 action에 작성된 페이지 링크로 보내는 역할이기에 작성된 링크에 직접적으로 접속하지는 않아 csrf 공격 실패

 

flag 획득

'보안 실습' 카테고리의 다른 글

[실습 기록] SSLH 실습  (0) 2025.03.29
[문제 풀이] Dreamhack CSRF-2  (0) 2024.09.09
[문제 풀이] Dreamhack XSS-2  (0) 2024.09.05
[문제 풀이] Dreamhack XSS-1  (0) 2024.09.05
[실습 기록] Buffer overflow / LDAP Injection  (0) 2024.09.05