brunch

You can make anything
by writing

C.S.Lewis

by Younggi Seo Feb 27. 2020

해커에게 필요한 웹 구조 해부하기 12

생성자(Construction)가 아니라서, 데이터 추출이 안되는데...


스프링 프레임워크 웹 개발자 과정 수강 당시, 편성된 교재들 중 지금 다시 들춰봐도 무슨 말인지 모를 1,100페이지가 넘는 책이 있다. 제목은 『자바 웹 개발 완벽 가이드 JSP/서블릿부터 웹소켓, 스프링 MVC, JPA/하이버네이트, 스프링 시큐리티까지』다. 이 책은 당시에 교육과정을 수료하고 중고서점에 팔고 싶어도 팔 수가 없었다. 왜냐면 재고가 그때 이미 넘쳤기 때문이다(수료생들 중 책테크를 하는 녀석들이 제법 있었던 건지 아니면, 안 팔리는 책인지 둘 중 하나다). 거기에 반해 『처음 만나는 자바스크립트』라는 300페이지 조금 넘고도 얇았던 책은 지금 서점에서 다시 보니 정말 기본기만 알맹이처럼 차려놓은 책이라는 것을 알 수 있었다. 물론 교육과정이 끝난 후 몇 번의 자가 실습 후, 중고서점에 팔았지만 말이다. 그런데 이 책을 중고로 다시 사려니 중고가가 새책 가격과 동일하다. 그렇다. 책은 두껍다고, 많은 것을 한 번에 다룬다고 값어치가 유지되는 것(전문가의 몸값의 산정과 비슷한 거 같기도 하다)은 아니다. 책의 가치는 그 책의 중고가를 보면 단 번에 알 수 있다.



어이됐든 필자는 본인이 예고한 대로 작일 coffeeOrder의 App의 추가적인 코딩을 각각 완료했다. 그런데 어제 업로드하려고 시도했던 소스가 우연히 'CheckList() is not a construction. 해당 함수는 생성자가 아니다.'라는 오류 메시지가 뜨면서 데이터 추출이 안되어서 Ajax 비동기를 완료했던 소스코드를 업데이트하지 못했다. 더군다나 금일 이전 버전의 소스코드에서부터 다시 코딩하였는데도 불구하고, 이번엔 'RemoteDataStore() is not a constuction. 해당 함수도 생성자가 아니다.'라는 오류가 발생하면서 갑자기 대한민국의 현시류와 함께 지금까지 작성했었던 소스코드를 조지고 싶어 졌다. 어제 한 시간, 오늘 두 시간 정도 도합 세 시간 동안 삽질을 하면서 두 눈이 충혈되는 것을 느끼면서 말이다. 하지만 원인은 "*부라~ 단지, 기존 로컬 서버 저장소 객체인 datastore에서 이미 한 번 실행됐던 생성자가 RemoteDataStore 객체에서는 초기 생성자(생성자는 원본 인스턴스이기 때문에 객체 생성 시 처음에 딱 한 번만 생성되어야 한다!)로 인식하지 못했던 거였다.



모든 문제는 원인부터 추적해야 한다. 안 그래, 문죄인 정권? 어서 바이러스에 대한 항생제를 개발해서 코로나 공포로부터 벗어나게 하자! 물론 대한민국에 배포되는 것 또한 중국 다음이겠죠..



Validating with Regular Expressions


Only valid email addresses allowed!

 

Console showing result of calling RemoteDataStore.add


Retrieving Data from the Server


Testing RemoteDataStore.prototype.get(each data)


Inspecting the response from a DELETE request


Console showing result of calling RemoteDataStore.add(금일 ajax 파트부터 재코딩했는데, servel->r 스펠 틀려서 30분 헤맸다)


Viewing Ajax requests in the network panel


Request details_about packet 정보의 해당 필드들을 통해 서버와 클라이언트의 시스템 보안 취약점을 캐낼 수 있다(섹션#1, 2 참조하기를 바람).


Inspecting the response from getAll


Saving coffee orders to the remote server



왠지 웹 구조를 분석하면서 필자가 목적으로 삼았던 취약점 분석보다 자바스크립트라는 언어에 흥미가 붙는 거 같다. 블록체인(비트코인 코어) 개발을 위한 언어도 자바스크립트가 주를 이루니, 앞으로 블록체인 분야의 개발 및 보안을 하는 데 있어서 자바스크립트의 기본기를 잘 닦아놓는 것도 본인이 지향하는 보안전문가가 되는데 보탬이 되리라.




Reference:

PDF document from github, ‘FRONT-END WEB DEVELOPMENT: The big NERD ranch guide.

매거진의 이전글 해커에게 필요한 웹 구조 해부하기 11
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari