전체 글

전체 글

    Background: Cookie & Session

    해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=4를 참고하여 작성하였으며 공부 목적으로 작성하였습니다.쿠키 🍪클라이언트의 IP 주소와 User-Agent는 매번 변경될 수 있는 값이며, HTTP 프로토콜의 Connectionless 와 Stateless 특징으로 인해 웹 서버는 클라이언트를 기억할 수 없다.Connectionless(비연결성) 클라이언트가 서버에 요청을 하고 응답을 받으면 그 즉시, TCP/IP 연결을 끊어 유지하지 않는 것이다. 서버는 이를 활용해 서버의 자원을 효율적으로 관리하고 많은 클라이언트의 요청에도 대응할 수 있게 한다. Stateless(무상태) 서버가 클라이언트의 이전 상태를 보존하지 않는다는 것이다. 이러한 Contection..

    [Web hacking] funjs Write-Up

    [Web hacking] funjs Write-Up

    문제funjs(출처 : dreamhack) Write-Up해당 문제에서는 index.html 파일이 주어지는 문제이다. index.html을 보고 분석한 후 문제에서 의도한 입력값을 입력하면 해결되는 문제이다. index.html 을 열게 되면 Flag를 입력하는 창이 계속해서 움직이는 것을 확인할 수 있으며, 코드 상에서 움직이는 부분을 제거하였다.움직이는 입력 창움직이는 부분과 관련된 코드 다음으로 main() 함수를 살펴보자. main() 함수 내부에 다음과 같이 _0x4949, _0x42931 배열 2개가 선언되어 있고 operator에 총 4개의 연산이 존재한다.var flag = document[_0x374fd6(0x183)](_0x374fd6(0x182))['value'], _0x4949 =..

    Find Key(moon) Write-Up

    문제 Write-Upmoon.png 파일의 속성을 보면 비정상적인 데이터는 발견할 수 없다.moon.png 속성 파일의 헤더 및 푸터 시그니처가 정상적인 PNG 파일의 시그니처인지 확인하기 위해 WinHex로 열어보면 푸터 시그니처가 PNG 파일의 시그니처가 아닌 것을 알 수 있다.moon.png 푸터 시그니처 푸터 시그니처부분을 자세히 보면 flag.txt 라는 문자열이 존재하고 ZIP 파일의 시그니처도 확인할 수 있다. ZIP 파일의 헤더 및 푸터 시그니처는 다음과 같다.ZIP 파일의 헤더 시그니처ZIP 파일의 푸터 시그니처 해당 부분만 가져와 flag.zip 파일로 저장하면 flag.txt가 존재하는 것을 알 수 있고 flag.txt에 Flag가 있을 것이라고 생각하였으나 암호가 걸려 있었다..fl..

    플래그를 찾아라 Write-Up

    플래그를 찾아라 Write-Up

    문제플래그를 찾아라! Write-Up문제에 존재하는 문자열을 볼 때 volatility 을 사용하는 것을 알 수 있다. 또한, 분석 대상 파일 뒤에 profile 정보가 포함되는 것으로 볼 때 volatility2 를 사용한 것으로 유추하였다.volatility 명령어 해당 문제에서 제공받은 파일의 압축을 해제하면 dump1.raw 파일이 생성되며 해당 파일을 메모리 분석 대상 파일로 사용하면 된다. 비록 문제에서 imageinfo에 대해서 제공을 하였지만 다른 imageinfo 존재 여부 확인을 위해 다음과 같은 명령어를 수행하여 imageinfo 정보를 확인하였다.volatility_2.6_win64_standalone.exe -f [메모리 분석 대상 파일] imageinfodump1.raw imag..

    Find Key(butterfly) Write-Up

    문제Write-Up우선, 해당 문제의 속성을 보았을 때 파일 크기와 같은 데이터가 정상적인 데이터인지 확인하였다.butterfly.png 속성 속성에서 별다른 특이점을 찾지 못하여 헤더 및 푸터 시그니처를 확인하였으나 정상적인 파일임을 알 수 있었다.butterfly.png 헤더 시그니처butterfly.png 푸터 시그니처 이후 스테가노그래피 기법이 적용 유무를 확인하기 위해 해독 사이트를 사용하여 해독을 시도하였다.Image SteganographyHide images inside other images. This is a client-side Javascript tool to steganographically hide images inside the lower "bits" of other image..

    제 친구의 개가 바다에서… Write-up

    문제해당 문제는 hidden.jpg 파일을 준 후 Flag를 획득하는 문제이다.[DigitalForensic]with CTF - 제 친구의 개가 바다에서… 풀이hidden.jpg 파일을 010editor로 열었을 때 jpg 파일의 시그니처 및 푸터 시그니처를 확인하였을 때 정상적인 파일인 것을 알 수 있다.시그니처 확인이후 내부에 또 다른 파일이 존재하는지 확인하기 위해 jpg 파일의 시그니처를 검색하였을 때도 1개 밖에 존재하지 않는다.또 다른 파일 존재 유무 확인hidden.jpg 파일을 자세히 살펴보니 글자가 있는 것을 알 수 있었고 명도 및 채도를 조절하면 Flag를 획득할 수 있다.hidden.jpg 내 문자열 보정 후 hidden.jpg보정 프로그램이 없어 다음 사이트를 사용하여 보정하였다.온..

    [Web hacking] Carve Party Write-up

    문제Carve Party 문제는 호박을 10000번 클릭해 플래그를 획득하는 문제이며 문제 파일로 html 파일이 주어진다.Carve Party(출처 : dreamhack)풀이문제 파일을 열게 되면 다음과 같이 호박과 카운팅 숫자가 나타나게 된다.Carve Party 문제 파일(출처 : dreamhack) 해당 파일의 소스코드를 확인하면 다음과 같이 카운팅하는 부분이 존재한다. 하지만 이를 10이나 100으로 변경 후 클릭하게 되면 원하는 형태의 플래그가 아닌 이상한 문자열이 나오는 것을 알 수 있다.else { $('#clicks').text(10 - counter); } } $(function() { $('#jack-target').click(function () { counter += 1; if (..

    Tools:Browser DevTools

    해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=3를 참고하여 작성하였으며 공부 목적으로 작성하였습니다.개발자 도구크롬 브라우저에서 F12를 누를 경우 개발자 도구로 진입할 수 있다. 개발자도구 레이아웃에 대한 구체적인 설명은 다음과 같다.개발자 도구(F12)1️⃣요소 검사(Inspect) 및 디바이스 툴바(Device Toolbar)2️⃣기능을 선택하는 패널로 다음과 같은 기능들을 사용할 수 있다. • Elements: 페이지를 구성하는 HTML 검사 • Console: 자바 스크립트를 실행하고 결과를 확인 • Sources: HTML, CSS, JS 등 페이지를 구성하는 리소스를 확인하고 디버깅 가능 • Network: 서버와 오가는 데이터를 확인 가능 •..

    Background:Web Browser🌐

    해당 포스팅은 https://dreamhack.io/lecture/roadmaps/1?obj=3를 참고하여 작성하였으며 공부 목적으로 작성하였습니다.웹 브라우저웹 브라우저는 뛰어난 UX(이용자 경험, User eXperience)를 제공하는 소프트웨어 중 하나로 이용자가 웹 브라우저를 사용하여 쉽게 정보 검색, 다운로드와 같은 기능을 이용하지만 실제로 내부에서 어떠한 연산일 일어나는지는 알 수 없다. 사용자가 주소창에 특정 주소을 입력했을 때 웹 브라우저가 하게 되는 기본적인 동작은 다음과 같다.웹 브라우저의 동작 1. 웹 브라우저의 주소창에 입력된 주소를 해석(=URL 분석) 2. 입려고딘 주소에 해당하는 주소 탐색(DNS 요청) 3. HTTP를 통해 대상 주소에 요청 4. 대상 주소의 HTTP 응답 ..

    [Reversing] rev-basic-8 문제 풀이

    문제rev-basic-8(dreamhack) 정적 분석해당 문제 또한 다른 rev-basic 문제와 동일한 형태이고 분기문인 compare_fun() 만 살펴보면 다음과 같다.compare_fun()compare_fun()을 분석하면 입력값인 a1에 -5(0xFB)를 곱한 후 byte_140003000과 비교하는 과정으로 동작한다. 처음 해당 문제를 보았을 때 음수 값인 -5 를 곱하는 것을 보고 막막하기만 하였으나, 자료형을 유심히 보았을 때 해결 방법을 생각할 수 있었다. a1에 -5를 곱하게 되면 숫자는 4바이트, 문자는 1바이트 이므로 문자의 상위 바이트를 0으로 채운 워 동일한 크기(4 바이트)로 만든 후 곱셈이 이루어진다. 이후 곱셈이 이루어진 결과를 unsigned __int8로 강제 형변환..