상세 컨텐츠

본문 제목

[HackCTF-Web#13] Cookie - 300 points

WebHacking/HackCTF

by bing_su 2022. 1. 10. 23:22

본문

반응형
SMALL

HackCTF Web의 13번째 문제는 Cookie다.

문제 링크: http://ctf.j0n9hyun.xyz:2027/

 

사실 이 문제의 경우, 군대 간 그 동기가 CTF 스터디 처음 할 때 추천한 여러 문제 중 하나였다. 그니까 블로그가 생기기도 전에 먼저 풀어봤다는 것..🤣 이 문제의 경우, 다시 복습한다는 느낌으로 풀어봤다.

문제 링크로 들어가면 쿠키 사진과 함께 "개꿀맛 쿠키"라고 쓰여 있다. 이 문제의 경우 처음 풀 때, 쿠키를 해당 사진과 문구를 힌트 삼아 쿠키를 이용하는 문제겠구나 싶었다.

Cookie 값 확인

Cookie 값을 처음 확인했을 때는 저게 뭘까 싶었다. 해당 값이 무엇인지 생각을 하던 중 base64로 인코딩된 문자열과 유사하다는 생각이 들어서 Online base64 decoder를 활용해 디코딩을 진행했다. 

WlhsS2NGcERTVFpKYWtscFRFTktNR1ZZUW14SmFtOXBXak5XYkdNelVXbG1VVDA5

⬇️

ZXlKcFpDSTZJaklpTENKMGVYQmxJam9pWjNWbGMzUWlmUT09

⬇️

eyJpZCI6IjIiLCJ0eXBlIjoiZ3Vlc3QifQ==

⬇️

{"id":"2","type":"guest"}

디코딩을 세 번하면 "{"id":"2","type":"guest"}" 값을 얻을 수 있다. 플래그를 얻기 위해 "{"id":"1","type":"admin"}" 꼴로 변경한 후, 3번의 base64 인코딩을 해서 다시 쿠키 값에 넣어줬다. (Online base64 encoder 활용)

{"id":"1","type":"admin"}

⬇️

eyJpZCI6IjEiLCJ0eXBlIjoiYWRtaW4ifQ==

⬇️

ZXlKcFpDSTZJakVpTENKMGVYQmxJam9pWVdSdGFXNGlmUT09

⬇️

WlhsS2NGcERTVFpKYWtWcFRFTktNR1ZZUW14SmFtOXBXVmRTZEdGWE5HbG1VVDA5

Cookie 값 갱신한 후의 화면

하지만 Password가 틀렸다는 문구와 함께 플래그가 보이지 않는다. 아마 접근 방식은 맞았는데 무언가 패스워드와 관련된 어떤 동작을 추가로 해 줘야 하는 것 같다.

 

이 부분에서 처음 풀 때 어떠한 방식으로 접근하는지에 관해 삽질을 좀 많이 했다. 이제는 여러 문제를 풀다 보니 관련된다고 생각하는 개념 여러 개를 적용해가며 접근할 수 있다.

개발자 도구로 확인한 Cookie 값 

개발자 도구에서 cookie값을 살펴보면 PassAdmin 값을 참이 되게 전송하면 문제가 풀리는 것 같다. 당시에는 풀지 않았지만 전에 이 사이트에서 풀었던 Input Check 문제에서 쓰인 strcmp() 취약점을 활용하면 문제가 풀릴 것 같다는 생각이 들었다. (해당 문제 링크: https://bing-su-b.tistory.com/77)

 

간단히 소개만 하면, php에는 strcmp() 취약점이 있다. strcmp($a, $b)를 실행할 때 $b가 크면 음수, $a가 크면 양수, $a와 $b가 같으면 0을 반환한다. 이때, php 특정 버전에서는 입력 값으로 배열을 넣으면 strcmp() 함수가 0을 리턴한다. 따라서 strcmp() 취약점을 사용하기 위해 PassAdmin[] 형태로 쿠키 값을 전달했다.

PassAdmin[] 형태로 쿠키 값 전달

strcmp() 취약점이 적용되어 플래그를 획득할 수 있다. 이를 인증하면 문제가 풀린다.

반응형
LIST

관련글 더보기

댓글 영역