분류 전체보기 (214) 썸네일형 리스트형 Web server and Web application Web Server 웹 서버는 사용자의 HTTP 요청을 해석하여 처리한 후 응답하여 주는 역할 ex) nginx, Apache, Tomcat, IIS 사용자로부터 받는 요청을 웹 서버 자체적으로 처리할지, 들어온 요청에 알맞은 내부 서비스로 연결을 해줄지 결정 ex) 클라이언트가 접근한 URI가 .html 확장자를 가진 리소스에 요청 시 웹 서버에서 해당 경로의 html을 반환해주고, .php 확장자를 가진 리소스에 요청 시 php 엔진을 통해 해당 요청을 처리하며, /payment/ 경로로 시작하는 요청에 대해서는 payment를 처리하기 위한 어플리케이션에게 요청을 연결해주는 역할을 수행하는 것이 가능 Web Application 사용자의 요청을 동적으로 처리할 수 있도록 만들어진 어플리케이션 ex).. http VS https 패킷 분석해서 admin이 로그인 페이지에서 로그인한 흔적을 찾고 TCP Follow로 들어가 pw를 찾는다 pw는 base64로 인코딩한 값을 줬느데 디코딩하면 FLAG를 얻을 수 있음 Escape-Room key.txt -> escape-room.exe ->나오는 페이지에서 진행(escaperoom.py) text = 'password is "p4ssw0rd"' compression = '' for i in text: compression += bin(ord(i))[2:].zfill(8) print(compression) zflag = True compressionText = '' count = 0 num = 0 temp = 0 while True: if zflag: temp = count try: count += compression[count:].index('1') num = count sub = num-temp except: sub = len(compression[count:]) compression.. 만든 기념 Captcha Challenge captcha가 보이지도 않고 submit버튼도 눌려지지 않는다 captcha는 hidden으로 숨겨져있고 html코드에서는 보인다 html 코드를 수정해 submit을 눌려지게 가능케 해도 1초안에 captcha를 입력하는건 불가능 개발자도구를 이용해서함 chall.pass.value=chall.captcha.value chall.submit() Side Channel Attack(부채널 공격) SPA(Simple Power Analysis) 스마트카드에서 연산되는 암호 프로세서의 전력 소비를 직접 관찰하여 카드에 저장되어 있는 비밀키를 직접 공격하는 방법 스마트카드 외부에서 관측 -> 키 또는 순간 작동 중인 operation에 대한 정보를 추론 DPA(Differential Power Analysis) 평문 입력-> 암호문 출력: 순간 전력 샘플 데이터 수집 -> 평균 차분 CPA(Correlation Power Analysis) 블록 암호 운용 모드 ECB(Electronic Code Book) 가장 간단한 구조이며 암호화하려는 메시지를 여러 블록으로 나누어 각각 암호화하는 방식 모든 블록이 같은 암호화 키를 사용하기 때문에 보안에 취약 만약 암호화 메시지를 여러 부분으로 나누었을 때 두 블록이 같은 값을 가진다면 암호화한 결과 역시 같음 공격자가 비슷한 메시지를 반복적으로 암호화 하는 반복 공격에 취약한 성질 한 개의 블록이 해독되면 나머지 블록도 해독됨 각 블록이 독립적으로 동작하므로 한 블록에서 에러가 난다고 해도 다른 블록에 영향을 주지 않음 CBC(Cipher Block Chaining) 각 블록은 암호화되기 전에 이전 블록의 암호화 결과와 XOR되며 첫 블록의 경우에는 초기화 벡터가 사용됨 초기화 벡터가 같은 경우 출력 결과가 항상 같기 .. AES 문제코드 from Crypto.Cipher import AES import random def padding(plaintext): block_size = 32 if len(plaintext) % block_size != 0: plaintext += b'\x00' * (block_size - (len(plaintext) % block_size)) return plaintext def make_key(): key = b'' for i in range(16): key += str(random.randrange(0, 2)).encode('utf-8') return key FLAG = b'~~~~~~~~~~~~~~~' FLAG = padding(FLAG) key = make_key() cipher = AES.ne.. 이전 1 2 3 4 5 6 ··· 27 다음