목록WebHacking (65)
Iriton's log
코드 상단에서 flag.txt 를 읽어서 FLAG의 값으로 넣는다. users 정보에는 guest의 비밀번호는 guest, admin의 비밀번호는 flag로 매칭되어 있다. 기본 페이지에서 username이 admin이라면, 즉, admin으로 로그인 했다면 FLAG 값을 띄워 준다. guest가 아닌 admin으로 로그인 해야 한다. (+ /login 페이지에서 로그인 성공 시에 입력된 id와 pw를 세션 값으로 넣는 절차를 진행하기 때문이다.) WEB에 보여지지 않은 비밀번호 변경 페이지 발견. 파라미터 값을 세션 아이디의 username에 매칭되는 pw로 넣음. 이때 username의 원래 pw를 체크하는 등의 코드는 존재하지 않음! 또한, flag 페이지 자체에서 세션 아이디 값을 admin으로 ..
제목만 봐도 XSS 문제인 걸 알 수 있다. 필터링이 존재하는데 이를 우회하는 것인가 보다. app.py부터 살펴보자. xss_filter 함수가 존재한다. 여기서는 script, on, javascript: 라는 문자열 세 개 중 하나라도 존재하면 공백으로 처리한다. lower() 함수를 사용해서 입력된 문자열을 소문자로 변경하기 때문에 대문자로 작성하여 우회하는 방법도 먹히지 않는다. 보통은 XSS 필터링 우회할 때 아래와 같은 방법을 사용한다. 1. 대문자로 쓰기 (SCRIPT) 2. onerror 사용 ( 3. javascript: ( alert!) 근데 이 코드에서는 3가지 방법을 모두 막으려는 것이다. 코드를 자세히 보고 생각해 보면 _filter에서 해당하는 문자열이 있으면 그것만 공백으로 ..
웹 페이지 흐름은 아래와 같다. 첫 welcome 페이지 Sign up 하이퍼링크 타고 가면 Signup 페이지가 뜬다 유심히 볼 것은 URL인데, next=confirm 으로 입력되어 있다. Next 버튼을 누르면 /confirm으로 이동한다. next 인자 값에 따라 페이지가 바뀌나 싶어서 py 코드를 살펴 보았다. # Route the request to the appropriate template if "signup" in self.request.path: self.render_template('signup.html', {'next': self.request.get('next')}) elif "confirm" in self.request.path: self.render_template('confi..
xss-1 푼 이후에 풀고 오기! 얘는 xss-1처럼 코드가 먹히지 않는다. /vuln 에서도 URL에는 alert(1)을 실행하는 스크립트가 있지만 alert 창이 뜨지 않았다. script가 아닌 img 태그를 이용할 수도 있다. img 태그에 src를 없는 이미지를 불러와서 오류를 발생시키면 처리할 코드를 onerror에 적어준다. 이때, onerror에 alert(1)을 넣어주면 처리되는지 보자. 이미지 오류가 뜨면서 alert 창이 떴다. 마찬가지로 alert창이 뜨게 만들었다면 취약점을 찾은 것이다. alert 대신 location.href='/memo?memo='+document.cookie 를 넣어주자. 이때 주의할 점은 onerror="" 안에 들어갈 코드이기 때문에 더블쿼츠와 싱글쿼츠를..
위치까지 자세히 알려 준다. 드림핵 xss 문제를 풀다 오니 페이지별 기능이 다 익혀져 있어서 코드를 따로 보진 않았다. /vuln : 취약점 연습하는 공간 정도로 생각 (이 문제에서는 alert(1)을 실행시킴) /memo : 메모 페이지이지만 flag를 띄우는 곳으로 간주 가능 /flag : 실질적으로 xss 공격을 하는 곳 우선 답을 알고 있기에 제공하고 시작하겠다. 가장 기본적인 xss 코드라 넣어봤는데 쉽게 풀렸다. /vuln 페이지에 가면 alert(1)을 실행한다. alert이 먹히면 이 자체만으로 취약점이 된다. 스크립트 코드 주입이 가능하다는 뜻이기 때문이다. 이를 이용하여 document.cookie로 cookie를 빼내올 수 있다. location을 이용해 /memo로 위치를 지정해 ..
DOM이란 Document Object Model의 약자이다. HTML의 문법은 태그의 집합으로 구성되어 있고 이러한 태그들은 트리 구조로 객체가 형성되는데 이러한 트리 구조 집합을 DOM 구조라고 한다. DOM Based XSS란 DOM 구조를 이용하여 요소들을 수정하거나 추가하는 등 동적 행위를 할 때 접근하는 JavaScript에 악성 스크립트를 삽입하여 클라이언트 측 브라우저에서 악성 스크립트가 실행되도록 하는 공격이다. Reflected XSS와 같이 동적 페이지를 구성하는 과정 상 발생하는 XSS 공격이다. 하지만 Reflected XSS는 서버 측에서 동적 페이지를 구성하는 환경에서 발생되는 XSS이다. 반면 DOM XSS는 클라이언트 측에서 사용자 입력 값을 통해 동적 페이지를 구성하는 환..
로그인 버튼이 뜨고 그 외에는 아무것도 할 수 없다. 바로 첨부파일의 코드를 살펴 보자. userid와 userpassword를 입력 받는데 userid가 admin일 경우 flag 값을 띄운다. password가 조건에 들어가지 않는다. 그럼 어찌 됐건 admin으로 로그인만 하면 되니 간단한 SQL Injection으로 해결할 수 있을 거 같다. query문을 보면 userid="{userid}" 으로 되어 있다. 다른 코드를 보니 입력값에 특수문자 제약이 걸려 있지도 않다. 즉, 더블쿼츠(")를 입력하여 우리가 임의로 userid 값 입력을 닫고, 뒤에는 주석처리 하여서 password 값에 상관없이 admin으로 로그인 할 수 있다. 주석은 '--'에 해당한다. password