Source:
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,{}))
Hint: 12342046413275659
1. 자바스크립트 난독화 문제였다.
2. 우선 Beautiful JavaScript 를 이용하여 자바스크립트를 정렬시킨다.
3. 정렬된 스크립트를 난독화 해제 사이트를 통하여 해제함
https://www.strictly-software.com/unpack-javascript
4.
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)
}
- 해제된 코드.
- 여기서 n에 어떻게 값을 넣어야 하지 고민.
- 힌트의 큰 숫자를 보고 n에 대입
- python을 통하여 result 결과 값을 구함
- 틀림.
???????????
- 스크립트를 잘몰라서 풀이를 찾아보니, 밑에 스크립트가 하나더 있었다.
function init(){
document.frm.password.value = "";
document.frm.password.focus();
}
- 저기 value에다가 PASS(12342046413275659) 을 넣어주면 된다. (프록시 사용)
- 사실 처음에 풀이된 코드에다가 n을 힌트의 값으로 넣고 result의 값을 제대로 찾아냈으면
풀었을 문제인데, 아쉽다.
# 난독화 문제는 앞에 eval 을 alert 등으로 바꿔서 확인한 후 풀기.
# script 끝까지 읽어보기
'Python' 카테고리의 다른 글
Pandas 를 통한 데이터분석 01) (0) | 2023.07.05 |
---|---|
Python 기초 (1) | 2020.06.30 |
Suninatas [4번] (0) | 2019.08.08 |
Suninatas[3번] (0) | 2019.08.07 |
Suninatas[2번] (0) | 2019.08.07 |