이전에 XSS 문제와 비슷하게 생긴 사이트이고, 똑같이 flag 페이지를 이용해서 memo에 flag를 띄우면 된다.(자세한 설명은 보안 문제 풀이 3 참고)
flag를 얻기 위해서 다음과 같이 생각을 해봤다.
127.0.0.1 이고, 파라미터에 userid=admin 이어야만 flag를 보여줌 -> 셀레니움에서 127.0.0.1로 보냄하지만 vuln 페이지에서 XSS 문제와는 다르게 JavaScript를 실행할 수 있는 키워드들을 모두 필터링한다는 문제가 있었다.

이렇게 script, frame, on이라는 키워드가 들어가면 모두 *로 처리해버린다.
그래서 XSS-2 처럼 <img>를 이용하기로 했다. 하지만 onerror도 막히기 때문에 사용할 수 없다. 그래서 src를 /admin/notice_flag로 설정해서 이미지 소스를 불러오면서 admin_notice_flag()를 실행시켜 memo_text에 flag를 저장하는 방식으로 해결할 수 있었다.
<img src='/admin/notice_flag?userid=admin'>
CSRF-1 문제에서 로그인이 생겼다. admin으로 로그인하면 홈화면에서 FLAG를 출력한다. 하지만 어드민 비번이 FLAG이기 때문에 알 수가 없다.
flag 페이지를 통해 셀레니움으로 요청을 하면 sessionId를 admin으로 바꿔서 vuln 페이지에 접속한다. 따라서 admin으로 로그인한 상태에서 change_password()를 호출해서 우리가 아는 비밀번호로 바꿔서 로그인하면 된다.
<img src='/change_password?pw=1234'>