자 쿠키 문제로 들어가봅시다!
쿠키.. 개꿀맛이죠..
아음 여튼 쿠키 사진이 달랑 있습니다 :D
소스코드를 볼까요!?
소스코드에도 별다른 정보가 없네요 : (
쿠키하면 역시 쿠키값을 확인해봐야겠죠 :D
쿠키에서 쿠키항목을 보니 암호화된 것 같은 문자열이 존재합니다!
특수문자와 제어문자가 구성되어 있지 않은 것 보니 base64 암호화되어 있다고 생각했습니다 :D
그래서 3번의 복호화를 돌려보았습니다!
3번의 복호화를 돌려보니
"{"id":"2","type":"guest"}" 라는 값이었다는 것을 알았습니다!
그럼 해킹을 하는 사람은 어떻게 해야할까요~?
당연히 관리자를 따야겠지요 :D
guest를 admin으로 바꾼 후 똑같이 3번 인코딩했습니다!
3번 인코딩하니 처음의 값과 비슷한 값이 나오는 군요 :D
이를 쿠키값에 넣어주고 저장 후 새로고침을 눌러봅시다!
'
으엥!? 패스워드가 틀렸다고 나오는 군요 : (
쿠기값의 항목에 보니 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
한번 꼭 읽어보시기 바랍니다!
이를 이용하여 NULL과 0을 비교하여 TRUE가 되게 되는 것이죠 :D
저는 burp Suite를 이용하여 패킷을 잡은 후 PassAdmin을 배열 형태로 바꿔주어서 전송했습니다!
쨘! 이렇게 플래그를 획득하였네요 :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 |