목록Dreamhack/Web Hacking (17)
Information Security Study

mango 문제에 접속하면 나오는 페이지다 문제 페이지의 js 코드다 9번째 라인을 보면 admin, dh, admi 문자열을 필터링해서 막고 있는걸 확인할 수 있다. 이용자가 쿼리로 전달한 uid와 upw를 데이터베이스에 검색한다. 필터링 함수 (function(err, result))를 실행하고 결과가 있다면 유저 아이디를 보낸다. 결과가 없다면 undefined를 보낸다. 페이로드를 생성한다 = 공격을 하기 위해 데이터를 넣는다 $regex = 정규식을 이용해 데이터를 조회할 수 있게 해주는 키워드 $in = 배열 안의 값들과 일치하는 값을 찾는다 URL 뒤에 /login?uid=guest&upw[$regex]=.*을 붙이니 guest가 출력되었다. 이는 upw를 데이터베이스에서 검색 후 guest..

메인 페이지다. 로그인 페이지다. session-basic 문제의 파이썬 코드다. users를 보니 계정은 guest, user, admin으로 세개고 admin의 비밀번호가 flag임을 알 수 있었다. root 페이지에서는 sessionid를 쿠키값으로 요청받고 있다. 로그인 페이지에서는 get, post 방식으로 요청을 받고 있다. get일 경우 login 페이지를 보여주고 post일 경우 username과 password를 요청받고 있다. password가 users에 있는 username과 일치한다면 sessionid의 쿠키 값을 응답해주는 것 같다. 우선 guest로 로그인해보았다. 여기까지는 cookie 문제와 동일하다. 개발자 도구로 쿠키 값도 확인해보았다. cookie 문제와 다르게 쿠키 ..

메인 페이지다. 비밀번호를 재설정하는 페이지다. 문제 파일에서 username, password를 찾아보려고 ctrl + f 로 admin을 검색해보았다. 바로 찾을 수 있었다. admin 계정으로 로그인에 성공했다! 로그인 후 여기저기 둘러보다가 플래그를 발견하였다.

메인 페이지다. 로그인 페이지다. 이외에 Home, About 페이지는 클릭해도 작동하지 않는다. 파이썬 코드를 살펴보았다. 페이지는 root 페이지와 login 페이지가 있다. 계정은 guest와 admin만 존재하는 것 같다. guest의 비밀번호는 guest이고 admin의 비밀번호를 알아내야 하는 것 같다. root 페이지에서는 username의 쿠키값을 요청받고 있다. username이 존재할 경우 Hello~~ 문자열을 출력해주는 것 같다. login 페이지다. 로그인 페이지에서는 get, post 두가지 방식으로 요청할 수 있다. 요청 방식이 get일 경우 login.html을 렌더링해주고 post일 경우에는 username과 password를 요청받는다. password가 users에 있는..

개발자 도구를 이용해 플래그를 찾는 간단한 문제다. 문제 파일을 다운로드 받으면 페이지가 4개인 것을 확인할 수 있다. 각 페이지에 들어가 개발자 도구를 켜서 소스 탭에서 플래그를 찾는 문제인 것 같다. project, index, components 페이지에는 플래그가 없었고 about.html에 플래그가 있었다. ctrl + f 로 문자열을 찾을 수 있다. 각 파일에 들어가 DH 문자열을 검색해서 플래그를 찾아주었다.

메인 페이지이다. vuln 페이지다. 메모페이지다. 여기서 플래그를 확인할 수 있다. flag 페이지다. 각 페이지에 대한 코드들이다. vuln 페이지에서는 입력한 값을 소문자로 변경해 param에 저장한다. 또한 'frame', 'script', 'on' 키워드를 필터링 해주고 있다. (xss 공격 방지) 또한 파람 값을 *로 치환해주고 있다. flag 페이지에서는 get, post 방식으로 접근이 가능하다. 만약 접근 방식이 get일 경우 (클릭해 flag 페이지 접속) flag.html 페이지를 렌더링해 보여주고 post일 경우 파람을 요청받는다. 코드에서 history.go(-1)은 실행 후 원래 페이지로 돌아간다는 의미이다. memo 페이지에서는 memo_text를 전역변수로 참조하고 있다. 또..

해당 문제의 정보다. 우선 guest로 로그인해 보았다. guest로 로그인한 결과이다. 개발자 도구에 들어가 sessionid의 값을 확인했더니 16진수임을 확인할 수 있었다. burp suite로 무차별 공격을 통해 쿠키 값을 알아내려 했으나... 설정 오류로 시도하지 못했다.

Session-basic의 문제 정보다. 접속 정보 보기를 눌러 문제 사이트에 접속한다. 파이썬 코드를 확인하면 guest의 비밀번호는 guest user의 비밀번호는 user1234 admin의 비밀번호가 플래그임을 알 수 있다. 우선 guest로 로그인해 보았다. guest로 로그인한 결과 화면이다. guest로 로그인 한 후에 개발자 도구를 열어 쿠키에 저장되어있는 sessionid를 확인했다. @app.route('/') @app.route('/login', methods=['GET', 'POST']) @app.route('/admin') 파이썬 코드에서 확인한 부분이다. route는 URL에 각 요청이 들어왔을 때 어떤 함수를 호출할 것인지 정해주는 역할을 한다. 따라서 URL에 /login, ..