본문 바로가기
워게임/natas

[natas - WEB hacking] level10 -> leve11

by B T Y 2017. 10. 8.
반응형

[natas - WEB hacking] level10 -> leve11





암호화: json_encode() -> xor_encrypt() -> base64_encode -> setcookie()


복호화: base64_decode() -> xor_encrypt() -> json_decode() -> array()


A xor B = C

A xor C = B


평문 xor key = 암호문

평문 xor 암호문 = key



[ 풀이과정 ]


이 문제에서는 xor로 암호화가 되어있는데 xor은 a^b=c이면 a^c=b이거나 b^c=a인 특성을 가지고 있다.

이 특성을 이용하면 key값을 구할 수 있다.





개발자 도구를 이용해서 쿠키를 확인해보면 아래와 같은 data의 값을 확인 할 수 있다..

data=ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSRwh6QUcIaAw%3D


그렇다면 현재 원래 데이터와 암호화된 데이터를 알기 때문에 이를 이용하면 key값을 구할수 있다..





php코드를 작성해서 해당 key값을 구하는 코드를 만들었는데 결과가 qw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jq!n'!nJq로

나오는걸 보고 qw8J가 계속 반복되는걸 봐서 key값으로 추측해볼수 있다.


이제 key값을 'qw8J'로 지정해주고 showpassword가 'yes'일때 쿠키의 data값을 찾는 php 코드를 작성하였고

결과는 ClVLIh4ASCsCBE8lAxMacFMOXTlTWxooFhRXJh4FGnBTVF4sFxFeLFMK와 같이 나왔다.





해당 값을 페이지에서 쿠키 data를 보낼때 변경해서 보내줘야하는데 프로그래밍을 통해서도 가능하지만

여기서는 burp suite라는 proxy툴을 이용해서 나가는 http 패킷을 잡아 쿠키에 data 값을 찾은 값으로 변경해서 해결했다.

혹은 그냥 개발자 도구에서 document 객체를 이용해서 cookie 값을 직접 변경해줘도 된다..





그렇게 되면 결과는..

The password for natas12 is EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3






반응형

댓글