일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 증적 사진
- 문제 풀이
- XSS
- sql injection
- 모의해킹
- 로그인
- 웹 개발
- sql injection point
- Python
- 과제
- 세션
- 게시판 만들기
- cookie 탈취
- php
- lord of sql injection
- 웹개발
- MySQL
- 웹 해킹
- 로그인페이지
- union sql injection
- 보안 패치
- Error based sql injection
- blind sql injection
- 보고서
- file upload
- CTF
- FridaLab
- JS
- Los
- csrf
- Today
- Total
목록전체 글 (127)
Almon Dev

ctf 문제 풀이 GET Admin 3 풀이1. CSRF 취약점 찾기문제에서 admin 계정을 탈취하라고 합니다. 그렇다면 비밀번호 변경 기능이 CSRF 취약점이 있는지 확인합니다. 마이페이지의 수정 기능에 인증정보가 포함되지 않는 것 같습니다. 그런데 요청값을 보니 입력한 적 없는 token이 포함되어 있습니다.아무래도 마이페이지에 접근할 때 자동으로 form태그에 hidden 타입으로 생성되어 있는 것 같습니다. GET 메서드도 확인해 봤지만 불가능했습니다. 2. 관리자 계정 탈취하기그렇다면 csrf token을 탈취한 뒤에 POST 메서드로 요청을 보내면 CSRF 공격이 가능할 것 같습니다.그러기 위해서는 우선 XSS 취약점을 찾아야 합니다. 게시판 글 작성에서 JS를 삽입해 CSRF Token을..

ctf 문제 풀이 GET Admin 2 풀이1. CSRF 취약점 찾기문제에서 admin 계정을 탈취하라고 합니다. 그렇다면 비밀번호 변경 기능이 CSRF 취약점이 있는지 확인합니다. 비밀번호 변경 기능에 인증정보(ex 현재 비밀번호)가 포함되지 않습니다.그렇다면 CSRF가 가능하다고 판단됩니다.우선 GET 메서드로 변경이 가능한지 확인 해보겠습니다. GET 메서드로 변경후 URL로 접속을 시도하면 에러가 발생했다는 경고문이 출력됩니다.GET은 불가능하고 POST만 사용이 가능한것으로 보입니다.그렇다면 XSS 취약점을 찾아 JavaScript를 이용해서 POST 요청을 보내야 합니다 게시판 글 작성시 와 같은 특수문자를 따로 필터링 하지 않기 때문에 XSS 취약점이 존재합니다.그렇다면 JS를 삽입해서 C..

ctf 문제 풀이 GET Admin 1 풀이1. CSRF 취약점 찾기문제에서 admin 계정을 탈취하라고 합니다. 그렇다면 비밀번호 변경 기능이 CSRF 취약점이 있는지 확인합니다. 마이 페이지에 비밀번호 수정 기능이 있고, 현재 비밀번호와 같은 인증정보가 필요 없는 것 같습니다. 링크를 이용하기 위해서 GET메서드로 변환이 가능한지 확인해봅니다. GET 메서드로 변환해도 여전히 비밀번호가 변경됩니다.CSRF 취약점으로 링크로 접속을 유도해 비밀번호를 변경할 수 있습니다. 2. 관리자 계정 탈취하기위에서 만든 GET 메서드에 관리자봇이 접근하도록 해보겠습니다. 관리자가 눈치를 채고 비밀번호를 변경했습니다.눈치를 챈 이유를 알기 위해서 도메인에 직접 접근해봅니다. alert 창이 출력되서 눈치를 챈 것..
12주 차 정리 CSRF (Cross Site Request Forgery)피해자가 자신의 의도와는 상관없이 공격자가 원하는 요청을 서버로 보내도록 만드는 공격입니다.XSS 와의 차이점- XSS는 스크립트를 삽입하여 피해자의 브라우저에서 실행합니다.- CSRF는 사용자가 요청을 보내도록 만듭니다.CSRF와 XSS 연계CSRF는 XSS와 연계가 가능합니다.- CSRF 취약점이 있는 경우 XSS를 통해 사용자의 클릭 없이 서버로 요청을 보낼 수 있습니다.CSRF가 발생하는 곳- 서버에게 요청을 보내는 곳 + 인증정보가 포함되지 않는 곳은 모두 CSRF가 가능합니다.ex) 비밀번호 변경 시 기존 비밀번호 입력 or 이메일 인증- 위험한 CSRF인지 판단하는 기준은 컨설턴트의 주관이 들어갑니다.ex) 비밀변호 ..

LOS 풀이 skeleton 풀이1. 코드 분석GET 메서드 pw 파라미터 값을 쿼리에 삽입하고, 쿼리 결과의 id 값이 admin인 경우 문제가 풀립니다.$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("skeleton"); 필터링은 prob _ . () 입니다.if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 삽입한 pw이후의 and 1=0을 주석처리하면 쉽게 ..

LOS 풀이 vampire 풀이1. 코드 분석GET 메서드의 id 파라미터를 쿼리에 삽입하고 쿼리 결과의 id가 admin인 경우 문제가 풀립니다.$query = "select id from prob_vampire where id='{$_GET[id]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id'] == 'admin') solve("vampire"); ' 를 필터링하고 id 파라미터의 값을 소문자로 변경한 뒤 admin 문자를 공백으로 치환합니다.admin을 공백으로 치환하기 때문에 adadminmin처럼 admin이 사라질때 admin이 되도록 만들면 우회가 가능합니다.if(preg_match('/\'/i', ..

LOS 풀이 troll 풀이1. 코드 분석GET 메서드 id 파라미터를 쿼리에 삽입한 뒤 쿼리 결과의 id가 admin이면 문제가 풀립니다.$query = "select id from prob_troll where id='{$_GET[id]}'";$result = @mysqli_fetch_array(mysqli_query($db,$query));if($result['id'] == 'admin') solve("troll"); admin이라는 문자열을 필터링합니다.그런데 i 플래그를 붙이지 않아서 대소문자를 구분합니다.mysql은 대소문자를 구분하지 않기 때문에 Admin과 같이 대문자를 섞으면 우회가 가능해 보입니다.if(preg_match('/\'/i', $_GET[id])) exit("No Hack ..

LOS 풀이 orge 풀이1. 코드 분석GET 메서드의 pw와 쿼리 결과의 pw가 일치하면 문제가 풀립니다.그렇다면 admin 계정의 실제 비밀번호를 알아야 풀 수 있는것 같습니다.$_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_orge where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge"); 이번에도 or 과 and를 필터링 하기 때문에 || 와 &&를 활용해야 합니다.if(preg_match('/..