Web - Cookie

HelloMG
|2020. 2. 7. 19:47

Cookie 문제

자 쿠키 문제로 들어가봅시다!

개꿀맛 쿠키..?

쿠키.. 개꿀맛이죠..

아음 여튼 쿠키 사진이 달랑 있습니다 :D

소스코드를 볼까요!?

소스코드

소스코드에도 별다른 정보가 없네요 : (

쿠키하면 역시 쿠키값을 확인해봐야겠죠 :D

Cookie

쿠키에서 쿠키항목을 보니 암호화된 것 같은 문자열이 존재합니다!

특수문자와 제어문자가 구성되어 있지 않은 것 보니 base64 암호화되어 있다고 생각했습니다 :D

 

그래서 3번의 복호화를 돌려보았습니다!

base64 디코딩

3번의 복호화를 돌려보니

"{"id":"2","type":"guest"}" 라는 값이었다는 것을 알았습니다!

 

그럼 해킹을 하는 사람은 어떻게 해야할까요~?

당연히 관리자를 따야겠지요 :D

guest를 admin으로 바꾼 후 똑같이 3번 인코딩했습니다!

base64 인코딩

3번 인코딩하니 처음의 값과 비슷한 값이 나오는 군요 :D

이를 쿠키값에 넣어주고 저장 후 새로고침을 눌러봅시다!

'

패스워드 틀림

으엥!? 패스워드가 틀렸다고 나오는 군요 : (

쿠기값의 항목에 보니 PassAdmin이라는 항목이 존재합니다!

PassAdmin

저 값이 아닌가 봅니다...

그래서 한참 이리저리 정보를 찾다가 아무런 정보를 찾을 수가 없었죠..=_=

그래서 유추해볼 수 있는건 "==" 느슨한 비교가 아닐까 생각을 했습니다!

 

이 공격은 php의 strcmp 취약점을 이용한 공격입니다 :D

php의 strcmp(인자1, 인자2)는 인자1과 인자2값이 같을 때 0을 리턴합니다.

그런데 php5.3버전에서 배열타입과 비교하면 NULL을 리턴하게 됩니다.

https://hydrasky.com/network-security/php-string-comparison-vulnerabilities/ 

 

PHP String comparison vulnerabilities – All things in moderation

1. Bypass PHP ‘==’ and ‘!=’ comparison operators ‘==’ and ‘!=’ is the default comparison in other languages. But in PHP has two main comparison modes, lets call them loose (‘==’ and ‘!=’) and strict (‘===’ and ‘!==’). Consider 2 following table to see the

hydrasky.com

위의 사이트가 잘 설명이 되어 있네요 :D

한번 꼭 읽어보시기 바랍니다!

Strcmp 느슨한 비교 배치표

이를 이용하여 NULL과 0을 비교하여 TRUE가 되게 되는 것이죠 :D

burp Suite

저는 burp Suite를 이용하여 패킷을 잡은 후 PassAdmin을 배열 형태로 바꿔주어서 전송했습니다!

Flag 획득

쨘! 이렇게 플래그를 획득하였네요 :D

 

이상 Cookie 문제풀이였습니다 !

'CTF > HackCTF' 카테고리의 다른 글

Cryptography - Smooth CipherText  (0) 2020.02.12
Cryptography - Great Binary  (0) 2020.02.10
Web - 가위바위보  (0) 2020.02.03
Web - Time  (0) 2020.01.31
Web - 마법봉  (0) 2020.01.23