728x90
오라클 패딩
복호화 시스템에 암호문을 넣었을 때에 그에 대한 패딩의 올바름 유무를 보여주는 오라클
처음 웹 페이지에 들어가면 ID와 PW 입력 값에 자동으로 guest가 들어가 있어 로그인을 해주면 admin 세션이 아니라는 문구가 출력이 된다.
쿠키 에디터 툴을 사용해 세션을 보면 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 |