CHALLENGE/SuNiNaTaS
[SuNiNaTas] 05번 문제
Hongfluenza
2018. 11. 8. 01:10
써니나타스 5번 문제이다. 너무 볼 것이 없어서 페이지 소스를 보았다.
핵심이 될 만한 코드는 이 함수였다. eval(function(p,a,c,k,e,r) 이 부분을 알기 위해 구글링을 한 결과, 자바스크립트 난독화가 되어있었다는 것을 알게 됐다.
간단한 자바스크립트 난독화를 해제해주는 사이트도 많았다. https://www.strictly-software.com/unpack-javascript 이 사이트를 통해서 해제 해보았다.
소스코드에서 힌트가 될 만한 내용은 다음과 같다.
atom을 이용해 다음과 같은 코드에 alert(PASS(12342046413275659)) 를 추가시켜 실행해보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!<!DOCTYPE html> <html> <body> <script> var digitArray = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); function PASS(n) { var result = ''; var start = true; for (var i = 32; i > 0;) { i -= 4; var digit = (n >> i) & 0xf; if (!start || digit != 0) { start = false; result += digitArray[digit] } } return (result == '' ? '0': result) } alert(PASS(12342046413275659)) </script> </body> </html> | cs |
코드는 다음과 같다.