Webhacking 6번
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
6번 웹페이지이다.
소스를 볼 수 있는 버튼과 ID, PW를 알려주고 있다.
소스코드를 보자.
이번 문제의 소스코드는 필요 없는 부분을 제외하고 올린다.( 너무 길기 때문 )
이번 소스코드는 크게 2가지로 나눌 수 있다.
첫 코드는 id: guest와 pw: qwe123을 base64로 20번 인코딩 후, 특정 수를 특수문자로 치환하는 코드이며
두 번째 코드는 cookie값으로 받은 id와 pw의 특수문자를 특정 수로 치환하며 20번 base64로 디코딩해준다.
그렇게 디코딩된 값이 각 admin, nimda이면 문제는 해결된다.
이번 문제는 아주 쉽다.
id 쿠키값에는 admin을 base64로 20번 인코딩한 값, pw에는 nimda를 20번 인코딩 한 값을 넣어주면 문제는 해결된다.
base64는 알고리즘 특성상 나올 수 있는 문자 범위가 0-9, a-f까지이기 때문에 특수문자가 나올 일 이 없다.
따라서 해당 부분은 무시해도 된다.
쿠키값을 확인하니 굉장히 긴 값이 들어있다.
이 값은 guest의 id, pw 값이 치환된 후 20번 인코딩 된 값이다.
이제 문제를 풀자.
수작업으로 웹사이트에서 20번 인코딩해도 되지만, 난 그런 걸 원하지 않기에 파이썬으로 해결한다.
굉장히 긴 값이 나왔다.
바로 pw도 인코딩 해주자.
필요한 값을 모두 추출했다.
이제 해당 값을 쿠키로 주고 웹페이지를 리다이렉션 시키자.
필자는 이미 문제를 풀었기 때문에 해당화면이 뜬다.
문제 해결!
시행착오
1. python에서 20번 인코딩하는 코드를 만드는데 조금 헤맸다.