본문 바로가기

웹/드림핵28

devtools-sources [문제] [풀이] Chrome HTML Document 파일을 연다. 개발자 도구를 연 다음 Sources 탭에서 Ctrl+f로 플래그 형태인 “DH{···}"를 검색한다. main.scss 파일에서 검색하게 되면 다음과 같이 플래그를 찾을 수 있다. 2022. 8. 20.
funjs [문제] [풀이] 문제에 접속하면 "Find FLAG !"가 써있는 입력창이 계속 움직이는 것을 확인할 수 있다. function moveBox() { box.posX = Math.random() * (window.innerWidth - 64); box.posY = Math.random() * (document.documentElement.scrollHeight - 64); box.style.marginLeft = box.posX + "px"; box.style.marginTop = box.posY + "px"; debugger; } 입력창의 이동과 debugger의 감지를 moveBox() 함수가 담당하고 있기에 해당 부분을 삭제하고 저장해 주었다. moveBox() 함수를 삭제하니 더 이상 입력창이 .. 2022. 5. 14.
login-1 [문제] [풀이] 문제에 접속화면 로그인을 할 수 있는 /login 페이지, 회원가입을 할 수 있는 /register 페이지, password를 찾을 수 있는 /forgot_password 페이지를 확인할 수 있다. 우선 소스 코드를 살펴보자. 소스 코드를 살펴보면 guest 계정과 admin 계정의 userLevel을 0과 1로 나눈 것을 확인할 수 있다. /forgot_password 페이지에서는 사용자가 backupCode를 입력하여 입력한 값이 일치한다면 password를 변경해주고 있다. 이때, sleep(1)을 걸어서 1초 내에 여러 접근이 발생할 경우 race condition 취약점이 발생한다. 해당 취약점을 이용하여 burte force Attack을 수행해 문제를 해결하는 것으로 보인다.. 2022. 5. 14.
session [문제] [풀이] 소스 코드를 살펴보면 guest, user, admin 계정이 있음을 확인할 수 있다. os.urandom(4).hex() 함수를 통해 4byte의 무작위 값을 hex 값으로 변환하여 session_id에 저장한다. 그 다음에 session_storage[session_id] = username을 통해 로그인 한 사용자의 세션 ID를 정의한다. session_storage[os.urandom(1).hex()] = 'admin'을 통해 admin의 세션 ID를 정의한다. 이때, admin의 세션 ID는 1byte의 hex 값으로 설정된다. 플래그를 얻기 위해서는 admin 계정으로 로그인을 해야 하는데 admin의 세션 ID를 Brute force attack을 통해 알아낸 다음 admi.. 2022. 5. 14.
web-misconf-1 [문제] [풀이] 문제에 접속하면 다음과 같은 화면이 나타난다. 보통 웹 서버의 관리자 초기 아이디와 비밀번호는 admin이기 때문에 시험삼아 한 번 admin을 입력해주었다. admin을 입력하자 로그인이 진행되고 비밀번호를 바꾸라는 화면이 나타난다. 새로운 비밀번호를 admin_new로 변경한 다음 마저 진행했다. 비밀번호를 바꾸고 페이지를 들어가면 다음과 같이 Welcome to Grafana 문구가 출력된 화면을 확인할 수 있다. 여기서 Organization을 찾아 플래그를 획득하면 문제가 해결될 것으로 보인다. 왼쪽 탭에서 Server Admin/Orgs로 이동해보았지만 플래그를 찾을 수 없었다. 해당 탭이 아닌 다른 탭에 플래그가 있을 것이라 생각해 다른 탭들을 마저 찾아보았다. 플래그는 S.. 2022. 5. 10.
simple-ssti [문제] [풀이] 문제에 접속하면 다음과 같은 화면이 나타난다. 404Error 페이지로 이동하면 URL에 입력된 /404Error를 그대로 출력하는 것을 확인할 수 있다. robots.txt 페이지로 이동하면 위와 마찬가지로 URL에 입력된 /robots.txt를 그대로 출력하는 것을 확인할 수 있다. URL에 플래그가 있는 flag.txt를 입력하면 플래그가 출력되지 않을까 싶어 입력해보았지만 의도와 다르게 문자열 '/flag.txt'를 그대로 출력한다. 우선 소스 코드를 살펴보자. 문제에서도 알 수 있듯이 해당 문제는 SSTI 취약점을 이용하여 해결하는 문제이다. SSTI 취약점은 서버 측의 기본 템플릿 구문을 이용하여 악성 페이로드를 삽입, 실행하면서 생기는 취약점을 말한다. 이때 사용되는 페이로.. 2022. 5. 10.