고전암호 고전 암호는 컴퓨터와 같은 고성능 연산 장치가 발명되기 전에, 비교적 간단한 기계와 손 등으로 암복호화를 수행하던 암호를 말합니다. 고전 암호는 일반적으로 치환(Substitution)과 전치(Transposition)의 방법으로 설계됩니다. 치환 암호는 단일 문자 치환 암호(Monoalphabetic Substitution Cipher)와 다중 문자 치환 암호(Polyalphabetic Substitution Cipher)로 나누어집니다. 단일 문자 치환 암호(Monoalphabetic Substitution Cipher) 평문의 각 문자를 약속된 다른 문자로 치환하는 암호입니다. 복호화를 위해 치환의 대응 관계는 일대일 대응이다. [카이사르 암호] 평문의 각 알파벳을 일정한 거리만큼 밀어서 ..
암호화 VS 인코딩 인코딩은 암호화와 다르게 데이터의 기밀성을 고려하지 않으며, 누구나 디코딩하여 원문을 구할 수 있습니다. 따라서 데이터를 숨기기 위해 사용하기 보다는 크기를 줄이거나 컴퓨터가 이해하기 쉬운 형식으로 변형하려고 사용합니다. 압축도 인코딩의 예시 중 하나입니다. 배타적 논리합 배타적 논리합(eXclusive OR, XOR)은 입력으로 들어온 두 인자가 서로 다를 때, 참을 반환하는 연산입니다. 암호학에서 배타적 논리합은 일반적으로 비트 단위로 이뤄집니다. 두 입력 값을 2진법으로 표기했을 때, 각 자릿수의 값이 다르면 1, 같으면 0이 출력됩니다. 입력 출력 0 0 0 0 1 1 1 0 1 1 1 0 합동식 합동식은 두 정수 a, ba,b 를 각각 정수 mm으로 나눴을 때 나머지가 같은지..
함께실습 (XSS-1) 처음 사이트에 접속했을 때의 모습이다. 아무것도 입력하지 않고 그냥 memo 페이지에 들어가면 'hello'만 뜬다. 메모 페이지를 사용해서 쿠키를 탈취할 것이다. Home화면에 있는 flag에 들어간 후 빈칸 부분에 다음과 같은 문구를 작성하고 제출을 눌러준다. 그리고 나서 다시 홈으로 돌아온 후 메모 페이지에 들어가보면 다음과 같이 플래그가 나타난 것을 확인할 수 있다. 혼자실습 (XSS-2) XSS1문제와 같이 flag 페이지의 빈칸에 을 넣고 memo 페이지에 들어가 보았다. 하지만 memo 페이지에는 'hello'만 출력이 되었고, flag값은 출력이 되지 않았다. 위에 대한 이유는 코드에서 찾을 수 있었다. 코드에서 /vuln 부분을 보면 html5 innerHTML에 ..
오리진은 프로토콜 (Protocol, Scheme), 포트 (Port), 호스트 (Host) 로 구성되고, 구성 요소가 모두 일치해야 동일한 오리진이라고 한다. Preflight Request는 actual 요청 전에 인증 헤더를 전송하여 서버의 허용 여부를 미리 체크하는 테스트 요청이다. 이 요청으로 트래픽이 증가할 수 있다. 교차 출처 리소스 공유 (Cross Origin Resource Sharing, CORS) 교차 출처의 자원을 공유하는 방법은 CORS와 관련된 HTTP 헤더를 추가하여 전송하는 방법을 사용한다.
1. 혼자 실습하기 쿠키와 세션으로 인증 상태를 관리하는 문제이다. 첨부 되어있는 파이썬 코드의 app.route부분에서 /login과 /admin 부분을 보고 페이지 url링크의 끝 부분이 /login인 것을 수정해야겠다고 생각했다. 사이트 링크 마지막 부분에 login>admin으로 바꿔 admin의 세션을 확인했다. guest 계정으로 사이트 로그인을 하고, 개발자 도구를 열어준다. Value를 위에서 찾은 admin의 세션으로 수정하고, F5를 누르면 플래그를 찾을 수 있다. DH{8f3d86d1134c26fedf7c4c3ecd563aae3da98d5c} 2. 함께 실습하기 (1) 크롬 확장자 도구 이용하기 사이트에 접속한 후 id: guest, pw: guest로 로그인한다. 쿠키로 인증 상태를..
문제 파일을 다운로드 한 후 압출을 풀어준다. 사이트에 접속해준다. 개발자 도구의 Sources 탭 기능을 활용해 플래그를 찾아 문제를 풀라고 했으므로 사이트에 접속한 후 F12를 눌러서 개발자 도구를 열어준다. 그 후 Sources 탭에 들어간다. Ctrl+Shift+F를 입력해서 검색(Search)창을 열어준다. 플래그는 'DH{'로 시작하기 때문에 검색창에 'DH{'를 검색해준다. 플래그: DH{2ed07940b6fd9b0731ef698a5f0c065be9398f7fa00f03ed9da586c3ed1d54d5} 플래그를 정답 칸에 입력해주면 끝!
개발자 도구(F12) 개발자 도구를 실행하려면 브라우저를 열고 F12를 누르면 다음과 같은 개발자 도구 창이 브라우저에 나타난다. Figure1에서 개발자 도구의 간단한 레이아웃 정보를 확인할 수 있다. 를 통해 페이지와 관련된 소스 코드들을 모두 확인할 수 있습니다. 💡단축키 Windows/Linux Ctrl + U macOS Cmd(⌘) + Opt(⌥) + U 쿠키 일반적으로 쿠키는 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용한다. Connectionless, Stateless 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠키(Cookie)가 탄생했습니다. 쿠키는 Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다..
HTTP HTTP(Hyper Text Transfer Protocol)란 서버와 클라이언트의 데이터 교환을 요청(Request)과 응답(Response) 형식으로 정의한 프로토콜이다. 기본 매커니즘: 클라이언트가 서버에게 요청하면, 서버가 응답 요청 서버에게 특정 동작을 요구하는 메시지이다. 서버는 해당 동작이 실현 가능한지, 클라이언트가 그러한 동작을 요청할 권한이 있는지 등을 검토하고, 적절할 때만 이를 처리한다. 응답 HTTP 요청에 대한 결과를 반환하는 메시지입니다. 요청을 수행했는지, 하지 않았는지, 안 했다면 이유는 무엇인지와 같은 상태 정보(Status), 그리고 클라이언트에게 전송할 리소스가 응답에 포함됩니다. HTTPS HTTPS(HTTP over Secure socket layer)는 ..