패딩 오라클 공격을 아는지 물어본다.
문제 진입 시 로그인 창을 확인할 수 있다.
로그인 시도 시 발급되는 쿠키 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)
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"를 뽑아낼 수 있게된다.
자 이제 스크립트를 이용해서 문제를 풀어보자.
새로운 IV 값은 획득했다. 이를 이용해 재 로그인을 시도해보자.
FLAG 값 획득이 가능했다.
**POINT : PADDING ORACLE ATTACK 에 대해 알고있는가?