본문 바로가기

웹해킹34

Blind SQL Injection - Boolean Based [Blind SQL Injection - Boolean Based의 정의] Boolean Based의 Blind SQL Injection은 쿼리의 결과를 참과 거짓만 출력하는 페이지에서 사용하는 공격이다. 출력 내용이 참과 거짓 밖에 없기 때문에 데이터베이스의 내용을 추측하여 쿼리를 조작한다. 쿼리는 데이터베이스 내용이 일치하여 웹 페이지에서 참을 출력할 때까지 임의의 값을 대입한다. 쿼리에 사용하는 함수는 substring, ascii, length 등이 있다. substring 함수는 첫 번째 인자로 받은 문자열을 지정한 길이만큼 출력하는데, 주로 문자 하나씩 출력하여 이름을 알아내는데 사용한다. ascii 함수는 문자를 아스키코드로 변환하는데, 작은 따옴표(')가 필터링으로 막힌 경우에 사용한다. .. 2022. 7. 5.
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.