HackChang

[Suninatas] 써니나타스 5번 문제 풀이 본문

W4RG4M3/W3B

[Suninatas] 써니나타스 5번 문제 풀이

HackChang 2020. 7. 30. 20:55

LEVEL5

이번 문제도 웹 문제이고, 바로 소스를 보도록 하겠다.

 

<form name="frm" method="post" action="./web05.asp">
        <table width="250" cellpadding="0" cellspacing="0" align="center">
            <tr height="30">
                <td colspan="2" width="100%" class="table_top" align="right">
                    <input type="button" name="main_btn" value="main" style="width: 60" onclick="location.href = '/'">&nbsp<input type="button" name="main_btn" value="Back" style="width: 60" onclick="history.back()"></td>
            </tr>
            <tr height="30" class="table_main">
                <td width="200" align="center" bgcolor="cccccc"><font size="2"><input name="password" value="" style="width:180"></td>
                <td width="50" align="center" bgcolor="cccccc" align="center">
                    <button type="submit">Check</button></td>
            </tr>
            <tr height="30" class="table_top">
                <td colspan="2">
                    <script>
							eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('g l=m o(\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\');p q(n){g h=\'\';g j=r;s(g i=t;i>0;){i-=4;g k=(n>>i)&u;v(!j||k!=0){j=w;h+=l[k]}}x(h==\'\'?\'0\':h)}',34,34,'||||||||||||||||var|result||start|digit|digitArray|new||Array|function|PASS|true|for|32|0xf|if|false|return'.split('|'),0,{}))		
                    </script>
                    <b>Check Key Value</b>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center"></td>
            </tr>
        </table>
    </form>
</body>
</html>
<script>
	function init(){
		document.frm.password.value = "";
		document.frm.password.focus();
	}

</script>
<!--Hint : 12342046413275659 -->
<!-- M@de by 2theT0P -->

힌트 : 12342046413275659

소스를 보면 스크립트가 존재한다. 난독화된 소스인 것을 알 수 있고, 정리해서 보도록 하자.

 

https://www.strictly-software.com/unpack-javascript

 

Javascript Unpacker Tool - Strictly Software

This Javascript unpacker tool has now been upgraded to allow it to unpack multiple eval statements. So if your packed code has itself been packed a few times it will loop through until it finds the original source code. If you want to test this multiple ev

www.strictly-software.com

위의 사이트에서 언팩했다.

 

위와같은 소스가 나왔고,

PASS라는 함수를 통해 결과값을 받는 것을 볼 수 있다.

 

PASS라는 함수를 개발자도구에서 정의하고, PASS함수의 매개변수로 힌트에서 제공했던

12342046413275659를 넣어보도록 하겠다.

 

PASS함수를 통해 리턴된 값을 5번문제 메세지박스에 넣어보겠다.

 

키값이 나오는 것을 볼 수 있었고, 인증을 해서 클리어를 했다.

 

Comments