natas11에 접속합니다.
Username : natas11
Password : U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK
쿠키가 XOR 방식으로 암호화 되어있다고 써있습니다.
소스코드를 확인합니다.
data의 default값은 showpassword는 no이고, bgcolor 값은 #ffffff입니다.
data 값을 howpassword"는 yes, bgcolor 값은 #ffffff로 만들어야 합니다.
loadData 함수를 보면 COOKIE의 data 값을 아래와 같은 순으로 디코딩하여 $tempdata를 만들어냅니다.
base64_decode() -> xor_encrypt() -> json_decode()
그렇기 때문에 data 값을 howpassword는 yes, bgcolor 값은 #ffffff 을 아래처럼 역순으로 인코딩하여 쿠키 값으로 설정하면 이 문제를 풀 수 있습니다.
json_encode() -> xor_encrypt() -> base64_encode()
xor_encrypt()를 하기 위해서는 XOR에 사용되는 key를 알아내야합니다.
A^B = C 이면, A^C는 XOR의 성질에 의해 A^C=B가 됩니다. 이 원리를 이용해서 key를 알아낼 수 있습니다.
Cookie로 세팅되어있는 data값을 가지고,
코드를 작성해 key값을 얻어보겠습니다.
얻은 qw8J라는 값으로 다시 Cookie값을 만들어 내는 코드를 작성합니다.
Cookie값을 얻었습니다. burp suite를 이용해서 얻은 쿠키 값으로 요청을 변조합니다.
패스워드를 얻었습니다.