Security/Wargame
[Webhacking.kr] Challenge 6
rootnix
2014. 10. 7. 00:33
안녕하세요.
오늘은 Webhacking.kr 의 6번 문제 풀이를 작성해보도록하겠습니다.
6번 문제에 접속하시면 다음과 같은 화면을 보게됩니다.
ID: guest
PW: 123qwe
라는 내용을 보게 되고,
Hint 는 base64 라고 주어졌습니다.
일단 소스를 한번 보도록 하죠
index.phps 로 들어갑니다.
위와 같은 소스를 보게 됩니다.
소스를 분석해 보도록하죠
쿠키값이 없을 경우
id는 guest
pw는 123qwe
로 선언 후
각 값을 가지고 base64 Encode를 20번 합니다.
그리고 나온 결과값에서
1 -> !
2 -> @
3 -> $
4 -> ^
5 -> &
6 -> *
7 -> (
8 -> )
로 치환을 하게 됩니다.
그리고 치환된 값을
user에 id를 password에 pw를 넣어주고 새로고침을 시킵니다.
그럼 문제를 클리어하려면 어떤 조건이 필요한지 마지막 쪽을 보시면
if($decode_id=='admin' && $decode_pw=='admin')
이고, 위에부터 보면 쿠키값을 읽어와
위에서 치환했던 것들을 반대로 치환후 base64 Decode 를 20번 해줍니다.
즉 원래 문자열로 원복하는거죠.
그래서 나온 원본문자열이 admin 이면 문제를 해결할 수 있습니다.
즉 우리가 이 문제를 해결하려면
위에서 처음 id,pw 를 인코딩/치환 한것처럼
admin 이라는 문자열을 20번 인코딩/치환 한 후
쿠키값을 변조해주시면 문제를 해결할 수 있는 겁니다.
해당 인코딩/치환, 치환/디코딩 을 구현한 파이썬 스크립트를 첨부합니다.