본문 바로가기

모의해킹/Dreamhack

[wargame.kr] dun worry about the vase

728x90

문제 정보

오라클 패딩
복호화 시스템에 암호문을 넣었을 때에 그에 대한 패딩의 올바름 유무를 보여주는 오라클
 

메인 페이지

처음 웹 페이지에 들어가면 ID와 PW 입력 값에 자동으로 guest가 들어가 있어 로그인을 해주면 admin 세션이 아니라는 문구가 출력이 된다.
 

cookie-editor

쿠키 에디터 툴을 사용해 세션을 보면 L0g1n와 value 값이 저장되어 있다,,! 
이 문제는 위에서 말한 오라클 패딩 공격을 해야하는 문제이다.
 

해당 세션 값을 URL 디코딩을 해주면 암호화 값이 나온다,,! =이 보이는 걸 봐서 base64 암호화로 두 개의 세션을 합친 거 같다..!
 

import base64

a = "9bJ/hFBcpjE="
b = "O1L1mtBDKO8="

a_decoded = base64.b64decode(a)
b_decoded = base64.b64decode(b)

print(a_decoded)
print(len(a_decoded))

print(b_decoded)
print(len(b_decoded))

해당 값을 디코딩해 주고 길이을 확인 하면 8바이트로 되어있다 즉, guest는 5byte이기 때문에 3byte는 패딩으로 채워진 거 같다.

그러면 guest\x03\x03\x03로 채워진다..!

 

import base64

a = "YcsFN4cN300="
b = "TE0urkbUyug="

a_decoded = base64.b64decode(a)
b_decoded = base64.b64decode(b)

print(a_decoded)
print(len(a_decoded))

print(b_decoded)
print(len(b_decoded))

guest_data = b"guest\x03\x03\x03"
admin_data = b"admin\x03\x03\x03"

# XOR
interm = [a_decoded[i] ^ guest_data[i] for i in range(8)]
# XOR
change_interm = [interm[i] ^ admin_data[i] for i in range(8)]

print(base64.b64encode(bytes(change_interm)))

데이터를 guest\x03\x03\x03에서 admin\x03\x03\x03으로 변경을 해주면 admin 값이 출력된다

 

나온 admin 값과 패딩으로 채워진 값을 넣으면 admin으로 로그인이 가능하다!

 

'모의해킹 > Dreamhack' 카테고리의 다른 글

CSP Bypass  (0) 2023.11.23
[wargame.kr] crack crack crack it  (0) 2023.11.20
crawling  (0) 2023.11.15
Tomcat Manager  (0) 2023.11.14
funjs  (0) 2023.11.13