[어설픈] webhacking.kr 6번 문제풀이

2019. 1. 4. 19:00Web Hacking/Webhacking.kr

안녕하세요!


오늘은 비교적 쉬운 100점짜리 문제인 

6번 문제를 풀어보도록

하겠습니다!!


자 문제 6번을 클릭하면 아래와 같이 뜨네요!

(1) hint가 base 64 (=암호화 방식중 하나죠)

(2) index.phps (당연히 여기 접소해봐라, 코드 있을꺼다)

(3) ID: admin,PW: admin 둘다 admin이여야 한다


이 정도 힌트네요!




자 그럼 힌트 2번에서 알려준대로!

현재 url창 주소 뒤에 index.phps를 추가적으로

입력하고 소스를 보도록 해요!


소스가 좀 길어서 


편의상 두 부분으로 split 했습니다!


우선 한 줄씩 해석하자면,

if(!$_COOKIE[user]) = 쿠키에서 user가 없으면


val_id와 val_pw를 각각

guest와 123qwe로 설정하겠다!


그리고 for문을 20번 도네요!

i=0부터 19까지니까 = 20번


근데 for문이 1번씩 돌면서 뭐하냐?

val_id와 val_pw를 

각각 base64 인코딩하네요!


즉, id와 pw를 20번 base64 인코딩한다!


그 이후에는 base64 인코딩 완료된

val_id와 val_pw를

str_replace함수에 넣습니다!


str_replace 함수는 

사용자가 지정한 문자가 검출되면

다른 문자로 바꿔주는 함수입니다!


1이면 !

2면 @

3이면 $

.....

8이면 )


val_id, val_pw

모두에 해당되네요!


그리고 마지막에

SetCookie함수로 

user에 val_id

password에 val_pw를 넣고 끝냅니다!






자 이제 이 경우는 COOKIE[user],COOKIE[password]가

존재하는 경우입니다!


왜냐?


(1) 일단 앞의 경우가 !COOKIE[user] 였으니 (쿠기가 없을 때)


(2) 여기서는 COOKIE[user]값을 decode_id 변수에 넣는데

COOKIE[user] 값이 없으면 (상식적으로) null이나 빈칸밖에 안들어가는데.....

그걸 가지고 뭘, 그리고 어떻게 decode합니까??


근데 여기는 id와 pw 변수를 

str_replace부터 시키네요!


str_replace는 제가 좀 전에 설명하였으니 

이번엔 패쓰 하겠습니다!


근데 이 str_replace라고 같은 게 아니에요!

이거는 특수문자만 숫자로 바꿔주는

str_replace에요!!!


그리고 밑에 보면 for문이 위에서와 같이 20번

도네요!!!


이번에는 for문이 한 번씩 돌 때마다,

decode를 매번 해요!


그렇게 20번 decode해서 밑에

if($decode_id=="admin" && $decode_pw="admin")

이면 문제가 풀리네요!


이것은 "쿠키값을 20번 base64로 decode해서 id와 pw가 admin으로 풀리면 인정"

뭐 이런 식으로 이해 할 수 있겠네요!





자 그러면 저희는 쿠키값을 입력해줄꺼기 때문에

쿠기값이 없을때 코드는 무시해도 되겠죠?


아무것도 입력하지 않았을때만 

그 코드가 실행되니 말이죠!


자 그러면 20번 해독해서 admin이 나오도록하려면

20번 인코딩해주면 되겠죠?


뭐로?

base64로요 ㅎㅎ


그래서 webhacking.kr 페이지 가서

저기 창에 admin을 입력하고 ->base64버튼을 클릭!

물론 이걸 20번 클릭해야합니다 

(금방되던데요?!)





자 그렇게 20번을 클릭하게되면 매우 긴 문자열이 나옵니다!

일단 이것을 복사해서 

메모장에 옮겨보도록 할게요!

너무 길어서요!





자 이제 이걸 쿠키 값 id,pw에 입력하면 되는데

저희가 마지막으로 신경써야하는거!

str_replace에 걸릴수도 있는거 

안 잊으셨죠?


위에서 쿠키값이 존재하면 제일먼저

디코딩이 아니라 str_replace부터 

하잖아요!!


그러니까 특수문자가 혹시 있나 찾아봅니다!

저는 ctrl+f해서 저렇게 일일이 문자가 있나 

찾아보았습니다!


근데 결과에 모두 "찾을 수 없습니다." 

라고 떳네요!




그래서 이걸 editthiscookie 툴을 사용해서

password 부분과

밑에 있는 user 부분에 


메모장에 복사한 값을 붙여 넣으면!

문제가 풀리게 됩니다!!!


생각보다 쉬운 문제였네요!


고생하셨습니다!