반응형
Base64 인코딩이란?
base64 인코딩이란 이진 테이터를 아스키 텍스트 문자열로 변환하는 방법이다. base64 인코딩은 대표적으로 전자우편 또는 HTTP 메시지를 전송할 때 사용하는데, 파일 전송과 같이 텍스트로 표현할 수 없는 바이너리 데이터를 전송할 때 base64로 인코딩 하여 전송한다.
base64인코딩 과정은 각각 8비트로 구성된 3개의 바이트를 6비트씩 쪼개어 4로 나누는 방식으로 진행된다.
디코딩 과정은 인코딩 과정과 반대로 6비트로 구성된 4개의 바이트를 8비트씩 쪼개어 3등분한다.
비박스에서 base64에 관련한 문제를 풀어보도록 하겠다.
문제 풀이
해당 페이지 내용은 secret은 암호화된 쿠키로 저장되어 있다고 한다.
힌트에는 암호화된 쿠키를 복호화하라는 것 같다.
그림 2와 같이 쿠키를 확인해 보면 QW55IGJ1Z3M%2F로 base64로 인코딩 되어있다. %2F는 url 인코더 되어서 원래는 /이다.
따라서 QW55IGJ1Z3M/를 디코딩하면 되는 문제이다.
Base64 encode, decode 스크립트
import base64
ENC = 0
DEC = 1
def encoding(s):
return base64.b64encode(s.encode('UTF-8'))
def decoding(b):
return base64.b64decode(b).decode('UTF-8')
print("encode = 0, decode = 1")
print("select : ",end='')
num = int(input())
if num == ENC:
print("input : ",end='')
s = input()
print(encoding(s))
elif num == DEC:
print("input : ",end='')
b = input()
print(decoding(b))
else:
print("error")
그림 3처럼 디코딩을 진행하면 Any bugs?라는 시크릿을 확인할 수 있다.
따라서 Base64로 인코딩을 했다고 해서 안전한것이 아니다. 누구나 다 디코딩을 하여 해독을 할 수 있기 때문에 base64로 암호화를 하는것은 취약하다.
반응형
'WEB hacking > 비박스(bWAPP)' 카테고리의 다른 글
[비박스(bWAPP)] - 관리자 페이지 인증 우회 (1) | 2022.11.03 |
---|---|
[비박스(bWAPP)] - Insecure DOR (Order Tickets) (0) | 2022.11.02 |
[비박스(bWAPP)] - Text Files (Accounts) (0) | 2022.10.22 |
[비박스(bWAPP)] - HTML5 Web Storage (Secret), XSS - Reflected (GET) (0) | 2022.10.19 |
[비박스(bWAPP)] - Clear Text HTTP (Credentials) (0) | 2022.10.18 |