본문 바로가기

Security/Web2 Hacking

[WebHacking] webhacking.kr 33번 문제 풀이

33-1번

 

소스코드를 확인하면 get방식으로 'hehe'를 보내면 되는거 같다.

그래서 get방식으로 “hehe”를 보내면 WrongNext로 변하게 된다.

 

 

 

33-2번

이번에는 post방식으로 hehehehe2를 보내야하는데 post방식은 get방식처럼 url에서 보낼수 없기 때문에 postman을 이용해 post 방식으로 보내준다.

그후 33.php를 웹사이트주소에서 6/뒤에 붙여넣어 https://webhacking.kr/challenge/bonus-6/33.php

를 입력하면 문제가 풀리고 다음문제로 넘어가게된다.

 

 

33-3번

Get 방식으로 나의 아이피주소를 보내는 것이니까 33-1번문제와 비슷한 방식으로 하면된다.

https://webhacking.kr/challenge/bonus-6/33.php?myip=211.36.142.229입력

 

 

33-4번

hint인 시간을 이용해 문제를 푸는 것인데 get방식을 이용해 passwordmd5방식으로 암호화된 hint를 알맞은 시간에 넣는 문제이다!

 

 

33-5번

Get방식으로 imgetpost방식으로 impostcookie를 이름 imcookie로 만들면된다.

Get방식과 post방식으로 보내야하니까 오른쪽 사진과 같이 개발자도구 환경에서 코드를 조금 수정한다. 그럼 정답~~

 

 

33-6번

사진과 같이 test라는이름인 쿠키에 값을내 ipmd5로 암호화한 값을 집어 넣는다.

그 후 ‘kk’에는 힌트 뒤에 있는 나의 프로세서 정보를 md5로 암호화해 넣어준다.

faa19a42c7164fdbf07446c13ece784c 이것이 인코딩 한 값이다.

이 값을 ‘kk’인 곳에 대입하면 다음 문제로 넘어 갈 수 있다.

 

 

33-7번

If문 안의 코드를 보면 str_replace함수 때문에 .이 공백으로 치환되게 된다. 그 후 내 ip값을 서로 같다를 이용해 get방식으로 보내주면 문제가 풀리게 된다.

 

 

 

33-8번

코드를 보면 addr == 127.0.0.1dl 되면 문제가 풀린다. 그래서 이걸 get방식으로 보내주면 웹사이트주소 뒤에 php?addr=127.0.0.1을 입력하면 다음과 같이 next가 나온다.

 

33-9번

이 문제도 get방식으로 ana==answer를 보내면 되는것인데 여기서 answer97~122까지 2씩 증가하면서 for문을 도는 아스키코드들의 집합이다. 그래서 97, 99, 101….121이런식으로 나오는 모든 아스키코드 문자들의 값을 웹사이트 뒤에 php?ans=acegikmoqsuwy를 입력하면 답이 풀린다.

 

 

33-10번

<hr>
Challenge 33-10<br>
<a href=forfor.txt>view-source</a>
<hr>
<?php
    $ip = $_SERVER['REMOTE_ADDR'];// ip호출하는 함수를 이용
    for($i=0;$i<=strlen($ip);$i++) $ip=str_replace($i,ord($i),$ip);//str_replace함수를 이용해 for문과함꼐 지속적으로 치환을 하고
    $ip=str_replace(".","",$ip);
    $ip=substr($ip,0,10);
    $answer = $ip*2;
    $answer = $ip/2;
    $answer = str_replace(".","",$answer);
    $f=fopen("answerip/{$answer}_{$ip}.php","w");
    fwrite($f,"<?php include \"../../../config.php\"; solve(33); unlink(__FILE__); ?>");
    fclose($f);
?>

소스코드 분석 -> ip를 이용해 ip를 치환하고 그 과정을 Php테스터에 넣어서 아래와 같은 값을 얻는다.

 

<?php

$ip = “211.36.142.224”;

for($i=0;$i<=strlen($ip);$i++) $ip=str_replace($i,ord($i),$ip);

$ip=str_replace(".","",$ip);

$ip=substr($ip,0,10);

$answer = $ip*2;

$answer = $ip/2;

$answer = str_replace(".","",$answer);

echo “answer ip/{$answer}_{$ip}”;     php테스터에 넣고 돌리면answerip/27577553775_5515510755이 값이 나오는데 이 후에 answerip/27577553775_5515510755.php를 웹사이트 마지막에 입력하면 문제가 풀린다.

 

 

고찰: 33번 문제를 계속 풀다 보니까 get방식으로 사이트에 보내는것, post방식으로 사이트에 보내는것을 어떻게 하는지 알게 되었다. 또한 php테스터롸 같은 툴들을 어떻게 사용하는지 알게 되었고 마지막 33-10번 문제 같은 경우에는 다른 문제들은 get이나 post방식으로 서버와의 통신을 하여 문제를 푸는 방식이지만 10번은 주소를 이용해 문제를 푼다는 것에 많은 시간이 걸리고 솔직히 올바른 방법보다는 야매?로 푼 거 같다... 인내심이 많이 필요한 문제이다.