상세 컨텐츠

본문 제목

[wargame.kr] LEVEL27_dun worry about the vase

카테고리 없음

by about_SC 2019. 7. 24. 15:06

본문

패딩 오라클 공격을 아는지 물어본다.


 

문제 진입 시 로그인 창을 확인할 수 있다.

 

 

로그인 시도 시 발급되는 쿠키 L0g1n의 값을 확인해보면
base64형태인 두개의 값을 확인할 수 있었다.

 

해당 쿠키 값이 메인페이지에 전달되며, 로그인이 이루어짐을 확인할 수 있었다.
해당 값에 임의의 값을 삽입하여 데이터를 변조해보자.

 

 

데이터 변조시 패딩 에러를 확인할 수 있었다.
이를 통해 PADDING ORACLE을 의심해 볼 수 있다.

또한, 쿠키 값인

a : aphFqBmIWuk=
b : Ebv0WpaXPWI=

이를 base64 디코딩 후 hex 화 시키면.

a : 6a 98 45 a8 19 88 5a e9
b : 11 bb f4 5a 96 97 3d 62

8바이트씩 총 16바이트의 문자가 된다.
이러한 형태의 암호값을 봐도 PADDING ORACLE을 의심해볼 수 있다.

--참고
*패딩 오라클에 관련된 한글자료를 찾아볼 수 있었다.
이를 참조하도록 하자.
(file:///C:/Users/hosungp/Downloads/Padding_Oracle_Attack_by_laughfool.pdf)

Padding_Oracle_Attack_by_laughfool.pdf
0.50MB

 

 

a : 6a 98 45 a8 19 88 5a e9
b : 11 bb f4 5a 96 97 3d 62

패딩오라클이라는 가정 하에 a는 IV 값, b는 암호화된 데이터 값을 의미하게 된다.
암호화된 b의 값의 평문 값이 guest라고 유추해보자.
암호화된 b의 값의 평문 형태가 g u e s t 0x3 0x3 0x3 이 될 것이다.

IV값(a) + 데이터 평문 값(b) 을 가지고 있다면 XOR 연산을 통해 intermediary value 값을 구할 수 있게된다.

 

CBC 암호화 형태를 보면, IV 값과 평문 값을 XOR 연산하여 intermediary value 값을 구한다.
이 후, 이 값을 3DES 암호화하여 암호화를 성공시킨다.

암호화된 admin 세션 값을 생각해보면,
[IV 값 + 암호화된 데이터 값] 의 형태로 되어 있을 것이다.

이전 과정에서 획득한 intermediary value 값과 유추한 데이터 평문 값(a d m i n 0x3 0x3 0x3)을 XOR 연산하게 되면
새로운 IV 값을 획득할 수 있다.

해당 IV 값으로 암호화 시 이전과 동일한 intermediary value를 거쳐 암호화가 이루어지며,
복호화 시 "a d m i n 0x3 0x3 0x3"를 뽑아낼 수 있게된다.

자 이제 스크립트를 이용해서 문제를 풀어보자.

 

oraclepadding.py
0.00MB

새로운 IV 값은 획득했다. 이를 이용해 재 로그인을 시도해보자.

 

 

FLAG 값 획득이 가능했다.


**POINT : PADDING ORACLE ATTACK 에 대해 알고있는가?