티스토리 뷰

cs/etc

base64 알고리즘 과 충돌

ba0bab 2018. 1. 31. 01:23




ctf 문제를 보다가 base64충돌을 이용한 문제가 있길래 공부한 내용을 정리했다.


먼저 base64의 알고리즘이다. 밑에는 예이다.


')'의 binary (10진수로 41)


00101001


base64 알고리즘은 6bit 로 계산


따라서 A의 base64 incoding은


001010 | 01(0000)


이 됌


12비트 됐는데 오버된 4바이트는 패딩이 된거임


001010 | 01(0000)


10진수로


10 | 16


base64 ascii 테이블을 참조하면


base64 table


KQ 가 되는것.





맞다.


이제 충돌에 대해서 정리해보겠다.


001010 | 01(0000)


뒤에 4비트는 필요없는건데 그래서 충돌이 가능하다.


001010 | 01(1111) 해도 되고

001010 | 01(0101) 해도 되고


저 뒤에 4비트 아무렇게 해도 된다.


따라서


001010 | 011111

10 | 31

이고 base64테이블 참조하면


Kf 가 되는것 이다.


이걸 디코딩하면




똑같이 )로 디코딩이 되는 것을 확인 할 수 있다.



Comments