level33[old]

2022. 4. 10. 21:43Site/Webhacking.kr

level33에 들어가니 Challenge 33-1이라는 문구가 보이고 view-source와 wrong 문구도 보였습니다

소스코드부터 확인했습니다

 

$_GET[' get '] 값이 hehe이면 Next가 출력되고 hehe가 아니면 Wrong 문구가 출력되니

get방식이므로 url에 hehe를 넣어주면 클리어 될 것 같습니다


Next를 누르니 Challenge 33-2라고 나왔습니다

이번에도 먼저 소스코드부터 확인했습니다

$_POST[' post '] 가 hehe 이고 $_POST[' post2 '] 가 hehe2 이면 다음 단계로 가는 것 같았습니다

burpsuite를 사용하는 방법도 있지만 저는 개발자도구를 실행시켜서 form을 수정하였습니다

POST방식으로 받기위해 form method를 post로 설정하고 

post에 hehe를 담고 post2에 hehe2를 담을 수 있는 input테그를 만들어 주었습니다

그리고 submit버튼을 추가시켜 제출하니 다음 단계로 갈 수 있었습니다


Next를 누렀더니 Challenge 33-3 이 나왔습니다

소스코드를 확인해보았습니다

$_GET[' myip '] 가 현재페이지에 접속된 ip[사용자 ip]와 동일하면 다음단계로 넘어가는 것 같습니다

cf) $_SERVER['REMOTE_ADDR'] : PHP Superglobal variables의 $_SERVER변수의 요소중 하나로 사용자가 현재 페이지를 보고 있는 IP 주소를 반환함

 

아이피주소확인 -> https://www.findip.kr/


Next를 누르니 Challenge 33-4가 보입니다

hint : 16481377

$_GET[' password '] 가 time을 md5로 해쉬한 값과 일치하면 다음 단계로 넘어가는 것 같았습니다

hint부분이 시간값인 것 같고 새로고침을 하니 누적해서 증가가 되었습니다

시간은 계속 변하니 time값을미리 증가시킨 다음 md5로 변환한 다음 해쉬값을 구했습니다

get방식이므로 password에다가 증가시킨 time값에 맞게 url에 넣어주면 될 것 같았습니다

 

저는 1649590150 시간값에 맞추어 주고 타이밍에 맞추어 넣어주었습니다[타이밍 놓치면 다시 해야 됩니다]

md5해쉬값->5a2e9082e918497c9b011f5980725503]


Challenge 33-5 입니다[언제끝나지?]

소스코드부터 보았습니다

get방식으로 imget을 받고 post방식으로 impost를 받고 쿠키값으로 imcookie를 전달하면 다음 단계로 가는 것 같았습니다

이 문제는 변수가 많아 burpsuite를 활용했습니다

imget=1을 넣어주면 get방식전달을 하고

Cookie에다 imcookie=1로 설정하면 항상 참값으로 설정되며 

마지막에 impost=1을 넣어주면 post방식으로 전달이 되었습니다

 


Challenge 33-6 입니다

hint 부분에 현재 웹브라우저 정보가 나와있는 것 같았는데

일단 모르겠으니 소스코드를 보았습니다

 

$_COOKIE[' test '] 가 현재페이지에 접속된 ip와 같아야 되고 

$_POST[' kk '] 가 hint에서 보았던 웹브라우저 정보와 같으면 다음 단계로 넘어가는 것 같았습니다

하지만 접속된ip정보와 웹브라우저정보가 md5로 해싱되어있기 때문에 각각의 값의 md5해싱값을 구해주었습니다

접근방법은 접속된ip정보와 웹브라우저정보의 해싱값을 구한다음 변수 test와 kk에 대입했습니다

 

cf) $_SERVER['HTTP_USER_AGENT'] : PHP Superglobal variables의 $_SERVER변수의 요소중 하나로 사용자의 웹접속환경 정보를 담고 있는 PHP전역변수

 

 

burpsuite를 이용하여 test 와 kk에 md5 해싱값을 넣어주었습니다


 

Challenge 33-7입니다

 

소스코드를 보니 접속한 ip주소에 . ""을 str_replace함수로 변환을 시켜줍니다

변환된 주소값을 현재 ip주소값에 넣어준다음 비교하여 일치하면 다음단계 인것 같았습니다

https://www.findip.kr/ 서 ip주소를 확인한다음 .을 빼주고 서로 일치시켜주면 클리어 될것 같았습니다

 


Challenge 33-8 입니다

소스코드를 보니 get방식으로 받은 addr 값이 없다면 접속한 ip주소값을 넣어주고 

addr가 127.0.0.1 와 일치한다면 다음 단계로 넘어가는 것 같았습니다

get방식이므로 이건 그냥 url에 addr=127.0.0.1 을 넣어주면 다음 단계로 갈것 같았습니다


Challenge 33-9 입니다

소스코드를 보니 반복문이 나오는데 아마 97 부터 122까지 돌리는걸보니

아스키코드 a - z 까지 돌리는것 같았습니다

그런데 i 값이 2씩 증가하는 것으로 보아 a, c, e ... 홀수번으로 answer에 저장을 합니다

따라서 a - z 까지 홀수번째 값들을 구한다음 ans에 넣어 get방식으로 전달하면 될 것 같았습니다

 

한번 파이썬을 이용해서 구해보았습니다

acegikmoqsuwy 값이 나옵니다

이 값을 전달하면 다음 단계가 나옵니다


Challenge 33-10입니다

드디어 마지막 단계입니다[지친다]

마지막이라 그런지 소스코드가 길어졌습니다

최대한 해석해보겠습니다

ip변수에다 접속한 ip주소를 넣음

ip주소길이와 같을 때까지 반복하며 i값을 ord 함수로 통해 아스키코드로 변형하여 ip에 저장

cf) ord() -> 아스키코드로 변형

str_replace 함수를 통해 ip값에서 . 을 "" 으로 대체

substr 함수로 ip값에서 0번째부터 10개를 추출

ip값 * 2, ip / 2 를 answer 에 저장

str_replace 함수로 answer값에 있는 .을 "" 으로 대채

fopen ("answerip/{$answer}_{$ip}.php", "w")

->answerip/{$answer}_{$ip}.php 에서 파일open, w[open할 파일없을시 새로 생성]

cf) fopen ( string $filename , string $mode [, bool $use_include_path= false [, resource $context ]] )

 

그런데 위 소스코드를 저희가 일일이 계산할 필요가 없기 때문에 

소스코드를 수정하여 ip값과 answer값을 구해주면 될 것 같습니다

저는 notepad++를 이용해 실행시켜주었습니다

answer값과 id값이 나왔습니다

위 값을 그대로 url 에 입력해 주면 클리어입니다

 

cf) level33을 풀어보았는데 정말 ㄱㅈ같은 문제였고 긴시간이 걸렸습니다[4시간이상?]

문제 스타일이 약간 벽돌깨기 같은 느낌이라 끝을 모르니 빡세네요

물론 풀면서 배운점도 많았지만 제발 다신 마주치지 않았으면 좋겠다라는 생각이드네요...

 

'Site > Webhacking.kr' 카테고리의 다른 글

level61[old]  (0) 2022.04.12
level58[old]  (0) 2022.04.10
level20[old]  (0) 2022.04.10
level12[old]  (0) 2022.03.29
level10[old]  (0) 2022.03.29