SQL injection/webhacking

webhacking 34번

ys.k 2022. 7. 27. 12:30

포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.

34번 문제이다.

문제 클릭 시 debug me라는 메시지가 출력되며, 확인 버튼 클릭 시 검은 화면만 나오게 된다.

개발자 도구를 사용하여 소스코드를 보자.

다행히 개발자 도구에서 스크립트를 확인할 수 있었다.

굉장히 복잡해 보이는 게 난독화 작업 때문이다.

필자는 해당 사이트에서 해독작업을 수행하였다.

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

아래에서 해독된 모습을 볼 수 있다.

이제 이를 notepad에 옮겨서 좀 더 편하게 봐야겠다.

아주 조금 보기 편해졌다.

우리에게 주어진 힌트는 debug me라는 스크립트 메시지이다.

해당 메시지는 alert() 함수를 통해 출력되었을 것이며, 한번 이를 검색해보자.

찾았다.

if 조건문을 만족하지 않으면 alert문이 실행되게 되어있다.

우리는 여기서 개발자 도구를 이용하여 난독화된 코드를 해독해 볼 수 있다.

else 문의 b('0x1e', '14cN')c 을 개발자 도구를 이용하여 해독해보자.

예상했듯이 else 문의 값은 debug me다.

이제 우리는 if문을 만족하는 방법을 찾아보자.

b('0x19', 'iUmC'), b('0x1a', '6]r1'), b('0x1b', 'RLUb'), b('0x1c', '4c%d'),  b('0x1d', 'llaF')

이제 알아보기 쉽게 써보자.

if (location[hash][slice]1 == Passw0RRdd) location[href] = ./?Passw0RRdd=1;

hashsclice1 이 Passw0RRdd 이면 ./?Passw0RRdd=1 이라는 주소로 이동하는 것 같다.

나는 조건문이 말하고자 하는 게 뭔지 모르겠지만 이동하는 주소는 알 수 있다.

한번 해당 주소로 이동해보자.

문제 해결

시행착오

1. 개발자 도구는 난독화된 코드를 해독할 때도 사용할 수 있다.

2. hashslice1이 Passw0RRdd인 조건문을 직접 만족하여 문제를 해결하는 것도 추후에 해봐야겠다.