Profile

머리정리하는곳

c2w2m2

[CodeGate] BabyMisc


alloca 풀다 빡쳐서 기분전환으로 쉬운문제 하나 잡아왔따.


보면 Stage 1,2,3 으로 나뉘어 있는데 요약하자면


1. Base64 collision


2. Base64 length collision


3. filtered command injection


이 되시겠다.


처음보는 Base64 collision 인데, 이거덕에 Base64에 대해 더 잘 알게 되었다!

 

먼저 Base64 인코딩 할때 뒤에 = 이나 == 이 붙는 경우를 볼 수 있다. 이것이 붙는 이유가 일종의 패딩이라 보면 되는데,


8진수 -> 6진수 하는 과정에서 0의 갯수를 맞춰주기 위해 아무 의미 없는것을 붙이는 것이다.


하지만 이것덕분에 0의 갯수를 맞춰주기 위한 아무것들을 조작함으로써 


다른 base64 인코딩 결과지만 디코딩시 같은 문자열이 나오게 할 수 있다.


고로 이것을 이용하여 Stage 1 을 클리어 하는것이다.


collision 을 찾는 과정은



이런 코드를 통해서 하였다.


이렇게 나온 base64 string 중에서 암거나 하나 고르고 넣어주면 stage 1이 클리어 된다.




이런식으로 collision 이 일어나는것을 볼 수 있다.



이런식으로 Clear 하고 Stage2 같은 영우는 그냥 길이가 다르고 디코딩된게 같으면 되니 그냥 = 하나 더 붙이면 된당.



마지막인데 필터링이 어렵지 않다. wall fl* 을 base64 인코딩 해서 넣어주면 된다.



는 지금 내 서버 환경인데 wall 이 안먹힌다 ㅠㅠ 스샷은 추후 추가하는걸로

'Pwnable' 카테고리의 다른 글

[DIMI] scan  (0) 2017.09.26
[Protostar] heap2  (1) 2017.09.20
[Protostar] heap1  (1) 2017.09.13
<asis ctf> mary_morton  (0) 2017.09.11
Pwnable.kr -dragon  (1) 2017.09.09