분류 전체보기(333)
-
OWASP Juice shop Difficulty 3
회원 가입시 서버에서 오는 응답 데이터중에 사용자의 역할을 지정하는 파라미터가 존재한다. role:"admin" 데이터값을 전송 피드백을 남기는 경우 사용자 고유의 ID값을 사용하는데 이를 이용해 다른 사용자인척 할 수 있다. 상품을 장바구니에 추가할 때 basket ID를 사용하여 장바구니를 지정한다. 해당 변수값을 override하여 수정한다. Stored XSS 회원 가입시 사용자명에 자바스크립트 코드를 삽입하였다. 관리자가 회원 관리 페이지에 접속할 때 사용자명에 저장된 자바스크립트 코드가 실행된다. DOM XSS 컴프레인 요청 페이지에서는 pdf, zip파일만을 업로드할 수 있다. xml파일을 업로드하면 에러 응답을 수신하는데 응답 페이지에 DOM XSS취약점으로 인해 system.ini 또는 ..
2020.04.28 -
OWASP Juice shop Difficulty 2
쇼핑 리스트를 확인할 때 페이지의 저장소 bid값이 저장된다. 해당 값을 변경하고 페이지를 요청하면 다른 사용자의 리스트를 확인할 수 있다. 서버에 피드백을 남기는 과정에서 파일을 업로드하는데 이 때, xml파일을 업로드할 수 있는 취약점이 존재하고 있다. HTML소스코드를 톻해서 확인할 수 있다. 악성 XXE 소스코드는 다음과 같이 작성할 수 있다. xxe payloads github을 구글링해서 수많은 페이로드를 확인할 수 있다. 로그인 과정에서 SQL injection을 통해 관리자 계정을 획득할 수 있다. 관리자 페이지에서 별5개짜리 피드백을 제거한다. 관리자 계정을 알고 있을 때 burp suite을 활용하여 브루트 포스 공격을 실행하여 패스워드를 알아내자 공격 과정은 다음과 같다. 1. 로그인..
2020.04.24 -
OWASP Juice shop Difficulty 1
OWASP-ZAP이나 Burp Suite를 통한 홈페이지 스파이더를 실행해보자. robots.txt , ftp 등 페이지를 확인할 수 있고 해당 폴더에는 여러 정보들이 포함되어 있다. (credential configuration.md 등등) XSS 회원가입 창에서 비밀번호 관련 인풋 컴포넌트가 일치하지 않는 경우에 submit버튼을 누를 수 없었다. disable="true"속성을 enable='true'속성으로 변경하여 데이터를 서버로 전송한다. 별점 0점 주는 것도 같은 맥락이다. HTML코드를 수정할 수 있는 웹 취약점을 활용한다. 웹에서 동작하는 자바 스크립트 코드 중에서 redirect메서드에 의해 사용자가 다른 페이지로 이동한다. redirect 메서드와 함께 사용되는 URL로 이동하면 비트..
2020.04.24 -
Python: Bruteforce, BoyreMoore Matching Algorithm
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 # _*_ coding=utf-8 _*_ #BruteForce String matching Algorithm def bruteforce( pattern, text ): lengthOfPattern = len(pattern) lengthOfText = len(text) i = 0 while i 비교할 가치 없음 nu..
2020.02.19 -
Python: 기초 문법
mylist = [ [] for x in range(5) ] => [ [], [], [], [], [] ] mylist2 = [ [0]*10 for x in range(10) ] 10행 10열의 배열 생성 mylist[0].append(1) mylist[1].append(2) => [ [1], [2], [], [], []] mydict = { 'key1': value1 'key2: value2 } mydict['key3'] = value3 mydict2 = dict(sorted(mydict.items(),key = lambda x:x[1],reverse=True) - 문자열을 입력받고 대 소문자 개수 세기
2020.02.15 -
Python: 선택 정렬, 삽입 정렬, 버블정렬, 병합정렬
[ 선택 정렬 ] index 0~8번 까지 각각 선택해서 알고리즘이 진행된다. 선택한 요소의 이후요소들 중 선택한 요소보다 작은 값이면서 최소값을 구한 뒤 swap한다. [ 삽입 정렬 ] 리스트 list = [4,2,7,1,6]이 존재한다고 하자. list[0]인 4는 그대로 두고 1번 index부터 마지막 요소까지 알고리즘에 넣어준다. 첫번 째 요소는 처음 알고리즘 실행 시 1번 인덱스값과 비교하기 위해서 건들지 않는다. 1. 요소를 선택 2. 해당 요소와 이전 인덱스 값을 비교한다. 해당 값보다 작다면 둘의 위치를 바꾼다. 3. 이 작업을 0번째 인덱스와 비교할 때 까지 계속한다. [ 버블 정렬 ] 앞에 수가 뒤에 수보다 큰 경우 서로 위치를 변경한다. 앞에 수가 뒤에 수 보다 작은 경우 아무런 변화..
2020.02.15