[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 두 가지 방식이 존재. 서비스 포트 표기 시 포트 ..
[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을 수행하면 될 것 같다..
[Webhacking.kr] old-55
2021. 11. 5. 14:46
Study/Web Hacking
마우스 좌표에 따라 이미지가 이동한다. 이미지가 왼쪽 상단에 위치하게 되면 위처럼 GAME OVER alert창이 뜬다. 여기서 확인할 건 다한 것 같으니 rank를 눌러봤다. rank와 id, score 표가 있었고, 그 아래엔 DB에 관련된 정보가 노출되어 있다. score부분이 링크로 되어있어 클릭해봤다. id와 score가 뜨면서 url 파라미터 score가 추가됐다. 다른 사람들의 score를 클릭해도 똑같은 id가 출력되는 것을 보면 select 결과의 맨 위 데이터를 가져오는 것 같다. 이제 아래에 있는 php코드를 살펴보자. mysqli_query($db,"insert into chall55 values('{$_SESSION['id']}','".trim($_POST['score'])."',..
[Webhacking.kr] old-34
2021. 11. 5. 14:12
Study/Web Hacking
Challenge 34에 접속하면 alert창 하나가 뜬다. alert창에는 debug me라는 문자열이 있다. Javascript 코드를 바로 살펴보자. 개발자도구를 열면 script태그에 Javascript 코드가 있다. 이대로는 코드를 보기 힘드니 JavaScript Beautifier를 사용해서 코드를 보기 편하게 바꾸자. Javascript 코드가 꽤 긴데 이걸 다 볼 수는 없다. 필요해보이는 코드만 찾아서 해석해보도록 하자. Challenge 34에 들어오자마자 alert창이 떴는데, 해당 코드를 찾아가보자. ctrl+f를 누르고 alert을 검색해봤다. 딱 하나의 검색 결과가 나왔다. if-else문에 alert이 있었는데, alert은 else일 경우에 실행된다. else 뒤에 있는 코드를..
[Webhacking.kr] old-53
2021. 10. 9. 05:55
Study/Web Hacking
old-53은 소스코드 링크외에는 다른 요소가 보이지 않는다. 바로 소스코드를 확인해봤다.
[Webhacking.kr] old-49
2021. 10. 9. 05:32
Study/Web Hacking
level을 입력받는 form이 하나 존재한다. 이전에도 이와 동일한 형태의 문제를 푼 적이 있는데,, 소스코드를 확인해봤다. SQL INJECTION level :