[dreamhack] devtools-sources
2022. 1. 25. 12:27
Study/Web Hacking
개발자 도구의 Source 탭 기능을 활용하면 flag를 찾을 수 있다고 힌트가 주어져있다. 문제 파일을 다운로드 하고, index.html에서 개발자 도구를 열어봤다. Source 탭에 있는 파일들 중에서 flag를 찾아야 하는 것 같다. ctrl+F 단축키를 입력하면 단어를 검색할 수 있다. 그런데 개발자 도구창에서는 안되는 거 같아 VScode에서 코드를 열고 찾아봤다. 일단 index.html에는 없는 거 같다. 다른 html 파일에서도 flag는 찾을 수 없었다. 다음으로 main.4c6e144e.js을 살펴봤다. main.4c6e144e.js에도 flag는 없는 거 같다. 다음은 main.3da94fde.css에서 찾아봤다. main.3da94fde.css에서도 flag는 찾지 못했다. fla..
[dreamhack] cookie & session
2022. 1. 25. 03:03
Study/Web Hacking
Cookie HTTP에서는 Connectionless와 Stateles라는 특징 때문에 웹 서버가 클라이언트를 기억할 수 없다. 이때 웹 서버가 클라이언트를 식별할 수 있도록 만든 것이 바로 cookie이다. coockie는 웹 서버가 클라이언트한테 발급하고, 클라이언트는 cookie를 요청에 포함하여 전송한다. cookie는 key와 value로 이루어져 있다. → 쿠키는 일반적으로 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용하고, 클라이언트에 저장된다. HTTP 프로토콜 특징 Connectionless 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미한다. 특정 요청에 대한 연결은 이후의 요청과 이어지지 않고 새 요청이 있을 때 마다 항상 새로운 연결을 맺는다. Statel..
[dreamhack] web browser
2022. 1. 25. 02:03
Study/Web Hacking
웹 브라우저 우리가 사용하는 웹은 HTTP라는 정해진 규약 위에서 통신해야 한다. 그 외에도 웹이 정상적으로 동작하려면 신경써야 하는 많은 것들이 있다. 하지만 우리들은 이런 것들을 잘 몰라도 웹을 잘 이용하고 있다. 이처럼 웹이 동작하는 데 필요한 복잡한 과정들을 몰라도 사용할 수 있도록 사용자 경험을 높여주는 소프트웨어를 웹 브라우저라고 한다. 주소창에 dreamhack.io을 입력했을 때 브라우저에서 일어나는 일은 대략적으로 아래와 같다. 주소창에 입력된 dreamhack.io를 해석 (URL 분석) dreamhack.io에 해당하는 주소 탐색 (DNS 요청) → 뒤에 더 자세하게 나옴 HTTP를 통해 dreamhack.io에 요청 dreamhack.io의 HTTP 응답 수신 리소스 다운로드 및 웹..
[dreamhack] web
2022. 1. 25. 01:57
Study/Web Hacking
웹 리소스 웹을 구성하기 위해 필요한 데이터를 말한다. → http://dreamhack.io/index.html 위 URL은 dramhack.io 파일 시스템에서 /index.html 경로에 있는 리소스를 가져오라고 요청하는 것이다. 모든 웹 리소스는 고유의 Uniform Resource Indicator (URI)를 가지고, 이를 이용하여 리소스를 식별한다. 웹 프론트엔드에서 대표적인 웹 리소스는 다음과 같다. HTML CSS JS 그 외 기타(이미지, 폰트 등등) 웹 클라이언트와 웹 서버의 통신 (클라이언트) 브라우저가 웹 서버에 HTTP 형식으로 필요한 리소스를 요청한다. (서버) 웹 서버는 브라우저가 요청한 내용을 해석하고 그에 맞는 적절한 연산을 한다. 리소스를 요청받은 경우 해당 리소스를 찾..
[dreamhack] http/https
2022. 1. 25. 01:22
Study/Web Hacking
HTTP Hyper Text Transfer Protocol의 약자. 클라이언트와 서버의 데이터 교환을 요청(Request) 응답(Response)으로 정의한 프로토콜. HTTP는 일반적으로 TCP/80 또는 TCP/8080 포트에서 통신. 네트워크 포트와 서비스 포트 네트워크 포트(Network Port) 네트워크에서 클라이언트와 서버가 데이터를 교환하는 장소 또는 길을 추상화한 개념. 네트워크 생략하고 “포트”라고 부르기도 함. 서비스 포트(Service Port) 네트워크에서 특정 서비스가 점유하고 있는 포트를 의미. 예를 들어 HTTP의 서비스 포트는 80번 포트. 보통 전송 계층(Transport Layer)의 프로토콜을 따르며 TCP와 UDP 두 가지 방식이 존재. 서비스 포트 표기 시 포트 ..
[HackerRank] Mini-Max Sum
2021. 11. 21. 16:36
알고리즘
# Mini-Max Sum (Warmup) [문제] [코드] void miniMaxSum(vector arr) { long sum = 0; for(int i = 0; i sum-arr[i] ? max : sum-arr[i]; min = min < sum-arr[i] ? min : sum-arr[i]; } cout
[HackerRank] Sherlock and Array
2021. 11. 21. 16:21
알고리즘
# Sherlock and Array (Search) [문제] [코드] string balancedSums(vector arr) { int leftSum = 0; int rightSum = 0; for(int i=0; i < arr.size(); i++) rightSum += arr[i]; for(int i = 0; i < arr.size(); i++) { rightSum -= arr[i]; if(leftSum == rightSum) return "YES"; leftSum += arr[i]; } return "NO"; } [코드설명] 주어진 정수 배열에서 기준의 좌, 우 원소들의 합이 같은지 확인하는 문제다. 기준(arr[i])에서의 leftSum과 rightSum을 구한 후, 비교해 풀었다. 원소들의 ..
[Webhacking.kr] old-40
2021. 11. 11. 17:33
Study/Web Hacking
로그인 페이지가 보인다. no, id, pw를 입력하는 form이 있다. 주어진 데이터로 로그인하면 guest로 로그인된다. 이번에도 DB관련 문제다. select query에서 where는 no=□ and id=□ and pw=□처럼 and로 묶여있을 것 같다. 일단 no, id, pw중에 injection이 가능한 곳을 찾아봤다. 결과적으로 no에서만 injection이 가능한 것으로 보인다. 그리고 id와 pw를 빈 스트링으로 두면 제대로 로그인 할 수 없었다. (추가적으로 알아낸 것은 no에서 공백이 필터링 된다는 것 정도?) 이제 admin으로 로그인해보자. no가 1일 때 guest로 로그인되었다. no이 0, 2, 3, ...일 때도 확인해봤다. 그 결과 1일 때를 제외하곤 모두 Failur..
[Webhacking.kr] old-29
2021. 11. 11. 16:49
Study/Web Hacking
파일을 업로드 폼이 존재한다. FLAG는 다른 테이블이 있다고 한다. 일단 아무파일이나 업로드해보자. 업로드 시간과,자신의 ip, 파일 이름이 테이블에 나타났다. 문제의 아이콘이 DB인 것을 보아 업로드한 filename이 DB에 저장되는 것 같다. 파일 업로드를 통해서 시도할만한 방법이 없어보여 burp suite를 실행해봤다. form data로 name과 filename이 존재하는 것을 확인했다. filename의 값이 DB로 전달되는 것 같다. 실제로 그런지 확인해보자. filename을 test로 변경하고 전송해봤다. 맨 아래에 filename이 test로 바뀌었다. filename에 담긴 값이 DB로 전달되는 것을 확인했다. filename 파라미터에서 injection을 수행하면 될 것 같다..