일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Express
- 웹해킹기초
- 자료구조
- bootstrap
- 써니나타스
- 웹개발
- 웹해킹
- CTF
- 이진트리
- 뷰
- 자바기초
- wargame.kr
- materialize
- NavBar
- 자바문제풀이
- 이진탐색트리
- gitbash
- MongoDB
- mongoose
- 워게임추천
- GIT
- 워게임
- 포렌식워게임
- node.js
- 자바
- node
- 그래프
- 포렌식
- nodeJS
- 웹기초
- Today
- Total
보안 전공생의 공부
[SuNiNaTaS] #5 | 자바스크립트 난독화 본문
페이지 소스코드를 확인해보았다
이렇게 12342046413275659 라는 힌트가 있다.
입력창에 그대로 입력해보면 아무런 변화가 나타나지 않는다.
이를 활용해서 풀어야되는 것 같다.
저번에 풀었던 문제처럼 난독화가 되어있다 !
▶ 자바스크립트 난독화
자바스크립트는 클라이언트(Client)에서 실행되도록 하는 언어여서 사용자가 웹사이트에 접근하게 되면 해당 스크립트를 그대로 볼 수 있게 된다. 이를 방지하고자 적용하는 기법이다.
(출처 : https://kkamikoon.tistory.com/165 )
이를 해독하는 사이트로 스크립트를 해독해보았다.
beautifier.io/ 처음에는 예전에 사용했던 이 사이트를 들어갔는데 해독이 잘 되지 않아 다른 사이트를 이용했다 !
www.strictly-software.com/unpack-javascript
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)
}
PASS라는 함수를 정의하고 있다.
변수 result를 리턴하고 있는데,
이 때 result는 digitArray를 어떤 패턴에 맞게 재배열한 것이다.
12342046413275659 라는 힌트를 여기에 이용하면 될 것 같다.
PASS함수의 매개변수 n값을 이 힌트로 주면 될 것 같다.
콘솔 창에 난독화를 해제한 소스코드를 입력하고,
n값이 주어진 힌트값인
PASS(123420464132756559)를 입력하였다.
그랬더니 9c43c20c 라는 값이 리턴되었다 !
이를 입력창에 입력하면 Authkey값이 나온다.
이번 문제는 저번에 풀었던 문제처럼 난독화 해제 관련 문제이다 !
그래서 쉽게 해결할 수 있었다 :)
콘솔창을 이용하는 이유, 난독화 힌트가 될 만한 문구에 대해 공부한 덕분에
큰 어려움이 없었다 !
혼자서 풀 수 있게 되어서 뿌듯하기도하고 신기하당
'Wargame > web' 카테고리의 다른 글
[Wargame.kr] #1 already got (0) | 2021.02.02 |
---|---|
[XCZ.kr] #32 Easy Trick | PHP 비교 연산자 취약점 (0) | 2021.01.27 |
[SuNiNaTaS] #6 (0) | 2021.01.20 |
[SuNiNaTaS] #2 (0) | 2021.01.20 |
N0Named Wargame [A] 입사테스트[2] | PNG와 APNG 구조 (0) | 2021.01.15 |