| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Practical Malware Analysis Labs
- SK쉴더스루키즈
- 알고리즘
- 우테코
- sk 쉴더스 루키즈
- 깃
- 동적분석
- 프리코스
- 루키즈
- webhacking
- React
- sk 쉴더스 루키즈 31기
- Dreamhack
- 레나 튜토리얼
- c
- 루키즈31기
- 위상 정렬
- 자바
- 예술의 전당
- 악성코드 분석
- 우아한테크코스
- top-cert
- sk쉴더스 루키즈
- linux
- 백엔드
- 웹개발
- 루키즈 31기
- sk 쉴더스
- 레나튜토리얼
- 리버싱
- Today
- Total
yon11b
[SK 쉴더스 루키즈] 사용자 인증 취약점 실습문제(쇼핑몰) 본문
4번
첫번째 방법
새 비밀번호를 등록하여 admin으로 로그인하세요.(가입한 본인 계정으로 비밀번호 찾기 기능을 이용)

비밀번호: 1234로 설정하고 burp intercept on으로 잡은 상태에서 등록 버튼을 눌러 날라가는 요청을 확인해보자.
_csrf=7b43e3b7-765d-4fb9-a658-68ed1734d193&password=1234&passwordconfirm=1234&encryptid=U2FsdGVkX19%2BmCqJ%2B3qbotBscuMYT1oxZ9%2BZ9UtMREo%3D
id가 암호화 되어있다.
admin의 encryptid를 구해서 전달해주면 될 것 같다.
이때 불러오는 파일을 개발자 도구를 통해서 살펴보자.
practice04.js 파일에서 memberid를 암호화하여 encryptid를 생성하는 코드를 찾을 수 있었다.

근데 난독화 되어 있다. 이거 해독하면 다음과 같다.(GPT 이용)
난독화된 코드
useworld = ~[];
useworld = {
___: ++useworld,
$$$$: (![] + "")[useworld],
__$: ++useworld,
$_$_: (![] + "")[useworld],
_$_: ++useworld,
$_$$: ({} + "")[useworld],
$$_$: (useworld[useworld] + "")[useworld],
_$$: ++useworld,
$$$_: (!"" + "")[useworld],
$__: ++useworld,
$_$: ++useworld,
$$__: ({} + "")[useworld],
$$_: ++useworld,
$$$: ++useworld,
$___: ++useworld,
$__$: ++useworld
};
useworld.$_ = (useworld.$_ = useworld + "")[useworld.$_$] + (useworld._$ = useworld.$_[useworld.__$]) + (useworld.$$ = (useworld.$ + "")[useworld.__$]) + ((!useworld) + "")[useworld._$$] + (useworld.__ = useworld.$_[useworld.$$_]) + (useworld.$ = (!"" + "")[useworld.__$]) + (useworld._ = (!"" + "")[useworld._$_]) + useworld.$_[useworld.$_$] + useworld.__ + useworld._$ + useworld.$;
useworld.$$ = useworld.$ + (!"" + "")[useworld._$$] + useworld.__ + useworld._ + useworld.$ + useworld.$$;
useworld.$ = (useworld.___)[useworld.$_][useworld.$_];
useworld.$(useworld.$(useworld.$$ + "\"" + useworld.$$$$ + useworld._ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + useworld.__ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld._$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.$__ + useworld.___ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "\\" + useworld.__$ + useworld.__$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$_$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "(\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$_$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + ")\\" + useworld.$__ + useworld.___ + "{\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$$ + "\\" + useworld.__$ + useworld.$$_ + useworld._$$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$$ + useworld.$$$_ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + "\\\"\\" + useworld.__$ + useworld.$$_ + useworld._$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + useworld._$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$__ + useworld.$$$ + "\\" + useworld.__$ + useworld.$_$ + useworld._$$ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + "\\\";\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.___ + useworld._$$ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + useworld._$ + "\\" + useworld.__$ + useworld.__$ + useworld._$_ + "\\" + useworld.__$ + useworld._$_ + useworld._$$ + ".\\" + useworld.__$ + useworld.___ + useworld.__$ + "\\" + useworld.__$ + useworld.___ + useworld.$_$ + "\\" + useworld.__$ + useworld._$_ + useworld._$$ + "." + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "(\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$_$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + ",\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$$ + "\\" + useworld.__$ + useworld.$$_ + useworld._$$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$$ + useworld.$$$_ + ");\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + useworld.$$$_ + useworld.__ + useworld._ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.$__ + useworld.___ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "." + useworld.__ + useworld._$ + "\\" + useworld.__$ + useworld._$_ + useworld._$$ + useworld.__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$__ + useworld.$$$ + "();\\" + useworld.__$ + useworld._$_ + "}\\" + useworld.__$ + useworld._$_ + "\\" + useworld.__$ + useworld._$_ + "$(\\" + useworld.__$ + useworld.$$_ + useworld.$$$ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$_$ + useworld._$ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$$ + ")." + useworld._$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "('" + (![] + "")[useworld._$_] + useworld._$ + useworld.$_$_ + useworld.$$_$ + "',\\" + useworld.$__ + useworld.___ + useworld.$$$$ + useworld._ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + useworld.__ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld._$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.$__ + useworld.___ + "()\\" + useworld.$__ + useworld.___ + "{\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$_$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + "$('#\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$_$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "').\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + (![] + "")[useworld._$_] + "();\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "\\" + useworld.__$ + useworld.__$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$_$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "(\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$_$$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + ");\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + useworld.$$$$ + useworld._$ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + "$('" + useworld.$$$$ + useworld._$ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + "[\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "=\\\"\\" + useworld.__$ + useworld.$$_ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$$ + useworld.$$$$ + useworld._$ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + "\\\"]');\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld._ + useworld.__ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + useworld.$$_$ + useworld._$ + useworld.$$__ + useworld._ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.__ + "." + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + useworld.$$$_ + useworld.$_$_ + useworld.__ + useworld.$$$_ + "\\" + useworld.__$ + useworld.___ + useworld.$_$ + (![] + "")[useworld._$_] + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.__ + "('\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld._ + useworld.__ + "');\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld._ + useworld.__ + "." + useworld.__ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.$$$_ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + "'\\" + useworld.__$ + useworld.$_$ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + useworld.$$_$ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "';\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld._ + useworld.__ + ".\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$_$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + useworld.$$$_ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + "'" + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + "';\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld._ + useworld.__ + ".\\" + useworld.__$ + useworld.$$_ + useworld.$$_ + useworld.$_$_ + (![] + "")[useworld._$_] + useworld._ + useworld.$$$_ + "\\" + useworld.$__ + useworld.___ + "=\\" + useworld.$__ + useworld.___ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$__ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$$$ + useworld.__$ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.__ + "\\" + useworld.__$ + useworld.$_$ + useworld.__$ + useworld.$$_$ + ";\\" + useworld.__$ + useworld._$_ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + "\\" + useworld.$__ + useworld.___ + useworld.$$$$ + useworld._$ + "\\" + useworld.__$ + useworld.$$_ + useworld._$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$_$ + "." + useworld.$_$_ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld.$$$_ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + useworld.$$_$ + "(\\" + useworld.__$ + useworld.$_$ + useworld.__$ + "\\" + useworld.__$ + useworld.$_$ + useworld.$$_ + "\\" + useworld.__$ + useworld.$$_ + useworld.___ + useworld._ + useworld.__ + ");\\" + useworld.__$ + useworld._$_ + "})" + "\"")())();
function encryptMemberid(memberid) {
var passphrase = "seyongkim";
var encryptid = CryptoJS.AES.encrypt(memberid, passphrase);
return encryptid.toString();
}
$(window).on('load', function () {
var memberid = $('#memberid').val();
var encryptid = encryptMemberid(memberid);
var form = $('form[name="pwform"]');
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'encryptid';
input.value = encryptid;
form.append(input);
});
var encryptid = CryptoJS.AES.encrypt(memberid, passphrase); 이니까(passphrase='seyongkim')
콘솔창에 이렇게 입력하자.
CryptoJS.AES.encrypt("admin", "seyongkim").toString()

그러면 admin의 암호화된 문자열이 나온다.
U2FsdGVkX18vMfK2UlkuJfKdRtNl7g0bW5THwYRs0rs=
이걸 등록버튼 눌렀을 때 날라가는 요청에encryptid 부분에 내 거 대신에 넣어주면 된다.
그럼 admin의 비밀번호가 1234로 초기화가 된다.
정답: encrypted_memberid
두번째 방법: 실행 시점 고려하여 푸는 방법
js가 encryptid를 만들기 직전에 memberid 값을 admin으로 바꾸는 것이다.
encryptid는 practice04.js에서 생성된다는 것을 burp을 실행하면서 practice04.js 코드를 보고 알았다.

그럼 우리는 비밀번호 변경 창을 불러오기 전에 id를 admin으로 미리 바꿔놔야 할 것이다.
비밀번호 변경 창으로 가는 버튼을 누를 때(or 비밀번호 변경 창에서 새로고침을 누르고) burp로 잡아서 수정해주면 된다.
비밀번호 변경 api: POST /practice/practice04/newpassword
비밀번호 변경 페이지 불러오는 요청

비밀번호 변경 페이지 응답

응답에서 value를 admin으로 수정

그 다음에 practice04.js가 실행되는데 여기서 admin의 encryptid가 생성되어 전달될 것이다.

실행한 결과> 비밀번호 변경 페이지가 잘 불러와졌는데 id가 admin이 된 상태에서 잘 불러와졌다.

admin이랑 encryptid가 잘 생성되어 들어가 있다.


내가 아까 설정한 비밀번호로 로그인이 가능하다!
5번
입력값 검증을 우회하여 비밀번호를 0으로 가입하세요.
그냥 0으로 가입하려고 하면 이런 메시지가 뜬다.


회원가입 페이지를 소스 코드를 본다. onsubmit으로 inputCheck()라는 함수를 실행시키고 있다. 이 함수를 보고 비밀번호 검증 로직을 우회하면 될 것이다.
F12>Sources>page>top>우클릭>Search in all files 하면 모든 코드에서 검색이 된다.

practice05.js 라는 파일에 함수 정의가 있다.
inputCheck() 함수를 살펴보자.
function inputCheck() {
var inputValue = $(".inputValue").val();
var reg = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/;
var hangulcheck = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
if (false === reg.test(inputValue)) {
inputInvalid(pwErrorarray[0]);
return false
} else if (/(\w)\1\1\1/.test(inputValue)) {
inputInvalid(pwErrorarray[1]);
return false;
} else if (inputValue.search(/\s/) != -1) {
inputInvalid(pwErrorarray[2]);
return false;
} else if (hangulcheck.test(inputValue)) {
inputInvalid(pwErrorarray[3]);
return false;
}
var encInput = encryptString(inputValue);
$(".inputValue").val(encInput);
return true;
}
어쨌든 return true가 나오면 된다.
그러면 practice05.js가 실행되는, 회원가입 버튼을 눌렀을 때 inputCheck=true;로 만들어주면 될 것이다.
inputCheck=true를 콘솔창에 입력하고 비밀번호를 0으로 넣고 전송을 했다.

0이 들어갔다.
그런데 회원가입에는 실패했다는 메시지가 뜬다.

inputCheck() 함수를 보면 입력값(pw)를 암호화하는 부분이 있다. check 검증을 다 통과하고 나서 암호화 하고 true를 리턴하는 것이다.
그런데 내가 먼저 true를 리턴해버리면 암호화 로직을 실행시키지 않게 된다.
일단 비밀번호를 조건에 맞게 설정하고 요청을 보내서 어떤식으로 작동하는지 보자.

내가 회원가입 버튼을 누르자마자 비밀번호가 갑자기 늘어났다. 암호화 된 결과이다.


암호화가 되어 전달이 되고 있다.
그래서 아까 내가 0을 넣고 inputcheck=true를 했을 때는 0이 그대로 전달되어서 실패한 것이다.
0을 암호화해서 전달
암호화하는 함수를 보자.
function encryptString(string) {
var passphrase = "seyongkim0810";
var encryptid = CryptoJS.AES.encrypt(string, passphrase);
return encryptid.toString();
}
console 창에 CryptoJS.AES.encrypt('0','seyonkim0810').toString() 혹은 encryptString('0') 을 입력해서 0의 암호화 문자열을 획득 한 후, burp에서 이 문자열을 넘겨주면 될 것이다.


그대로 넘겨주면 된다! (전달할 때는 인코딩해서!)

'보안 > SK 쉴더스 루키즈' 카테고리의 다른 글
| [SK 쉴더스 루키즈] 파일 업로드 취약점 실습 문제(1~6번) (0) | 2026.07.02 |
|---|---|
| [SK 쉴더스 루키즈] 파일 다운로드 취약점 실습 문제(1~4번)와 대응방안 (0) | 2026.07.01 |
| [SK 쉴더스 루키즈] SSRF 실습문제 1~4번 (0) | 2026.07.01 |
| [SK 쉴더스 루키즈] CSRF 실습문제 3번 (0) | 2026.06.30 |
| [SK 쉴더스 루키즈] CSRF 실습문제 2번 (0) | 2026.06.29 |