정리: 웹해킹 9번 결국 못해서 실패함

과제 설명 및 미리보는 현황 파악

리눅스 선행학습 후 진행

(완료 but 목표 한 것 다르게 정리는 할 수 없었음. 이번 방학안에 정리하는 것이 목표)

 

참조. 생활코딩 리눅스 강의 

https://opentutorials.org/course/2598

 

리눅스 - 생활코딩

수업소개 인터넷과 함께 웹이 폭발적으로 성장하면서 저렴한 운영체제에 대한 수요가 폭발적으로 증가했습니다.  클라우드 컴퓨터가 등장하면서 이제 컴퓨터는 필요할 때 사용하고, 필요 없을

opentutorials.org

-웹해킹

1.회원가입(아이디,패스워드,닉네임,내설명)

(완료 but db 문제(이게 문제가 아닐지도 모른다...) 해결 못해서 여러분은 회원가입 못함)

2.로그인

(완료 but 위와 같은 이유로 못함)

3.내 정보 수정

(완료 but 로그인을 못하는데 수정이 가능할까? 당연히 못한다.)
4.자유게시판 (회원가입해야 글 쓰기 가능, 비회원은 게시글 조회 및 검색만 가능)

(완료 but db 문제(역시 이게 문제가 아닐지도 모른다...) 해결 못해서 볼 수 없음 나만 봄)
5.게시글 작성/수정/삭제/검색/조회

(완료 but 위와 동일)
6.댓글 작성/수정/삭제 

(완료 but 위와 동일)
7.게시판에 글 10개 이상되면 하단에 1,2,3,4버튼을 통해 다음 페이지로 넘어가기

(완료 but 위와 동일)

8.포인트 랭킹(순위, 닉네임 표시)

(완료 but 열심히 조건도 만들어서 뿌듯하고 있는데 여러분은 조건을 찾을 수가 없을 거임 영원히 나만 알게되어 됨)

위 기능이 전부 포함된 게시판 만들기. 최종 과제 제출시 개인서버에 올려서 타인이 접속 가능하게 해야함.

(미완료 개인 서버에 올렸는데 타인이 접속할 순 없음...) Fail

 

- 포너블 
1. 가상 머신 설치(VMWARE Player 추천)

(완료)
2. 가상 머신에 해커스쿨 FTZ 설치

(완료)
3. FTZ 올클리어

(완료 but 글로 남겨두지는 않았음. 이렇게 보면 이녀석 안 풀고 풀었다는 거 아냐? 라는 의문이 드시겠지만 정말 풀었음 믿어주지 않으면 너무 슬플듯... 이 친구도 방학내에 리뉴얼된 블로그와 함께 찾아가도록 노력하겠음...)

4. pwnable.xyz5 문제 풀기

(미완료 - 여기서부터는 기간내에 못 끝낼 것 같아서 방장님과 심도 깊은 대화를 나누고 포기함. 다 할 수 있다는 나의 과욕이었음 ㅎㅎ 관대하신 방장님이 하나라도 열심히 하라고 응원해 주심. 근데 위에 것도 못 끝내서 얼굴을 들 수 없음... 난 쓰레기임 ㅠㅜ 존재할 가치가 없음. 오늘부터 쓰레기통이 내 집임)

5. 3,4번은 풀이 작성해서 블로그에 올리기

(미완료 - 풀질 않아서 작성할 수도 없었음)

 

아래부터는 웹해킹 과정을 서술할 것임... 나의 뻘짓에 대한 나 스스로의 어이없는 합리적인 이유를 적어놓았음.

 

먼저 과제를 받았을 때 부터 시작함

'게시판 만들기'를 바로 구글 검색하니 방법이 많이 나왔음. php, jsp, spring이 대표적으로 사용된다고 함. 근데 요즘 php는 잘 안쓰이고 대규모로는 jsp랑 spring이 쓰이는데 spring은 한국에서 많이 쓴다고 함. 여기서 머리가 돌아버림 해킹을 공부하는 거니깐 외국에서 많이 쓸 것 같은 jsp로 만들기로 결정함 - 이미 첫 단추를 잘못낌(다른 분들은 다 php로 만들었음... 살펴보니 php 공부하라고 링크까지 걸어주심... 꼭 이번 방학안에 따로 공부하겠습니다. ㅠㅜ)

 

찾아보니깐 동빈나라는 유튜버(오 심지어 저번 스터디때 강의 자료에 있던 분임... 알고보니 내 c언어 스승이기도 함...)가 jsp 게시판 강의를 찍어놓았음

 

참조. JSP란?

https://gmlwjd9405.github.io/2018/11/03/jsp.html

 

[Web] JSP란 (Java Server Pages) - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

참조. 동빈나 - JSP 게시판 만들기 강좌 (JSP Advanced Development Tutorial)

https://www.youtube.com/playlist?list=PLRx0vPvlEmdAZv_okJzox5wj2gG_fNh_6

 

JSP 게시판 만들기 강좌 (JSP Advanced Development Tutorial)

 

www.youtube.com

아무것도 모르는 바보인 나는 그냥 받아치면서 하나하나 공부했다. 여기서 6일 걸림(7/1~7/6). 물론 jsp 제작 환경 만들기(tomcat 설치, eclipse 설치, mysql 설치, mysql workbench 설치 등) + 다른 강의보는 것까지 포함한 기간이었다...

 

다 vm ware에까는 거여서 더 어려웠음(위 강의는 윈도우 환경을 기반으로 하기때문에) 

 

참조. 생활코딩 DB 강의

https://opentutorials.org/course/3161/19533

 

MySQL의 구조 - 생활코딩

수업소개 이 수업에서는 MySQL의 구조를 소개합니다.  강의

opentutorials.org

tomcat이랑 eclipse 연결할때 정말 눈물을 주르륵 흘렸음...

'Tomcat 서버 오류 - 포트 8080이 이미 사용 중입니다' 라는 오류 발생해서 아래를 참조해서 해결함.

https://www.it-swarm.dev/ko/java/tomcat-%EC%84%9C%EB%B2%84-%EC%98%A4%EB%A5%98%ED%8F%AC%ED%8A%B8-8080%EC%9D%B4-%EC%9D%B4%EB%AF%B8-%EC%82%AC%EC%9A%A9-%EC%A4%91%EC%9E%85%EB%8B%88%EB%8B%A4/823025371/

 

java — Tomcat 서버 오류-포트 8080이 이미 사용 중입니다

이 문제를 해결하는 방법은 TCPview 설치 TCP보기로 이동하여 Tomcat이 사용하는 포트를 확인하십시오 .8005,8009,8080 이외의 다른 포트는 Eclipse의 서버 탭으로 이동하십시오. Tomcatv9.0 서버에서 포트 번�

www.it-swarm-ko.tech

컴퓨터와 영혼의 맞다이를 수십번은 떳음

mysql 설치(kali linux 사용)

https://computingforgeeks.com/how-to-install-mysql-on-kali-linux/

 

How To Install MySQL 8.0 on Kali Linux | ComputingForGeeks

MySQL 8.0 is the latest stable release of MySQL relational database management system. MySQL is a free to use Database Management System (RDBMS) that uses

computingforgeeks.com

mysql jdbc 설치

여기서 또 눈물을 주륵주륵 흘렸음... 영상은 너무 쉽게 하더라...

 

와 완성하고 겁나 뿌듯했음. 이 강의를 다 들으면 기본적인 게시판을 만들 수 있음. 과제로 따지면 1,2,5(일부분)이 가능해지는 거임. 이제 막 자신감이 생겨서 다른 걸 만들어 볼려는데 역시 난 감자임. 고수님들이 만들어논 거나 보면서 따라치자는 마음가짐으로 찾아보는데...? 커넥션풀? mvc model2? 뭐여... 이런거 안배움...

 

참조. jsp 게시판

https://all-record.tistory.com/category/%EC%BD%94%EB%94%A9/JSP

 

'코딩/JSP' 카테고리의 글 목록

세상의 모든 기록은 코딩 및 개발관련 정보와 유용한 프로그램, 앱, 인터넷 사용에 관한 정보를 전달하는 블로그입니다.

all-record.tistory.com

찾아보니 동빈나쿤 오이오이 역시 믿고있었다구. 커넥션풀도 있고 댓글도 있어 심지어 이번에는 페이징 처리도 숫자로 해준다고? 이거 완전 날로먹는 과제 아님ㅋㅋ 하면서 행복회로 굴림.

아주 과감하게 위에 한거 날림...(나의 6일도 날라감)

 

참조. JSP Ajax 고급 회원제 채팅 사이트 개발하기 강좌 (JSP Chatting Service Project)

https://www.youtube.com/playlist?list=PLRx0vPvlEmdAlUbX_TGDxaSxKCvfl2isa

 

JSP Ajax 고급 회원제 채팅 사이트 개발하기 강좌 (JSP Chatting Service Project)

 

www.youtube.com

한가지 문제가 있었는데 나는 감자기 때문에 앞에 과정이 빠지면 뒤에껄 따라 갈 수가 없음. 그래서 처음부터 보기 시작했음. 근데 보다보니깐 채팅만 거의 13강만 있는거임. 근데 이분은 뭘 할때 미리 다 코드를 쳐놓고 시작해서 울며 겨자먹기로 봄. 6일간의 노력이 허사가 아니었는지 조금조금씩 넘겨가면서 봄.

사실 이때까지만 해도 나의 실력을 믿어서 채팅도 만들 생각으로 웃음이 지어짐(진심 이러면서 코딩함)

근데 하다보니깐 여러 문제가 발생함. 커넥션풀이 작동이 안하질 않나. 어디가 틀렸는지 계속 안됨... 눈물의 똥꼬쇼를 하면서 하다보니 원하는 기능들은 다 뽑아서 만들었음. (1,2,3, 살짝 이상한 4, 검색 및 조회가 안되는 5, 7 완성)

이 날이 7/14일임 한 8일 정도 쓴거임.(물론 해커스쿨 FTZ를 풀면서 진행함) 여기서 깊은 고민이 들기 시작함. 만약 내가 이걸 혼자서 다시 만들 수 있을까? 와 절대 못하겠는 거임... 뭔가 강의들이 머릿 속을 돌아다니면서 감자쉑 아무것도 모르죠 이런소리 하는 것 같았음.

그래서 고민 끝에 방장님께 연락을 해서 포너블 포기함(IDA 보는데 헉 소리남... 이거 20일까지 못할 것 같은 필이 옴)

그리고 지키지 못한 약속도 해버림(자신있는 웹해킹은 기간내에 할 수 있어요!!!)

멋진 방장니뮤ㅜ...

7/19일 까지 또 혼신의 코딩으로 이제 서버에만 올리면 되도록 다 작성해둠... 너무 뿌듯했음 감자가 싹튼 감자가 된거임

하지만 다른 분들껄 보니깐 자신감이 없어지긴 함... php로 너무 잘 만드셨더라...

 

서버를 알아보기 시작함. war파일로 배포한 후에 tomcat을 외부접속 허용하게 해주면 된단다. 음 약속을 지킬 생각하니 싱글벙글해짐. 근데 안됨? 공유기 설정 만지고 방화벽을 조금 손보면 외부 접속이 된다는데? 뭐지함 끙끙 거리면서 이것 저것 만지다가 집 공유기 날려버림 집 와이파이 1시간동안 끊어먹음 형이랑 아빠한테 쌍욕먹음... 눈물의 핸드폰질로 원인을 찾아서 고쳤는데 이제 외부 접속을 만지기 겁남... ㅠㅜ

 

그래서 다시 방장님께 외부 서버 알아봄. '1년 무료인 aws로 알아보세요'라고 하셔서 찾아서 설정을 시작함. 만지고 1달러도 보내고 ip도 뒤지고 동적 ip할당도 하고(이때 돈나간다고 해서 진짜 열심히 뒤져봄) 다시 또 tomcat깔고 mysql깔고github도 가입하고 깔고 war파일 올리고 했는데 안됨.(1차 시도 실패) (이미 20일 지남 21일쯤이었음...)

 

다시 여러번의 시도를 거침(별걸 다해봄 - 버전 문제인가 하고 jdk랑 mysql 다시깔고 별짓 다함)

마침내 7번의 시도 끝에 뭔가 접속하는 것처럼 보임...

눈물의 7번의 시도...

와 mysql 외부 접속 문제인 것 같음!! 와 진심 나 천재아님ㅋㅋ 다 해결했다 멋지게 링크 올릴 생각에 싱글벙글함(이때가7/23)

막 찾아보면서 권한추가과 방화벽 허용??????? 앗... 안 좋은 추억이 떠오름 하지만 다시 도전함

 

응 해결 못함... 20일까지 끝내는 걸로 계획 잡아놔서 이후로 다른 대회 준비하기로 했음 7/27일 날 교수님 앞에가서 발표(이게 끝이 아님 최종은 9월에 있음)하는 거라 이 과제에 많은 시간을 낼 수가 없었음... 변명임... 나의 노력부족임...(지금 7/25일 새벽 4시 끝까지 해결 못 할 까봐 구구절적 이 글을 쓰고 있음...)

 

마지막으로 완료한 모습을 보여드리고 마치도록 하겠음

 

index 화면

1.회원가입(아이디,패스워드,닉네임,내설명)

이삭님의 블로그 이름인 ls-toast를 조금 바꿔 lstoast로 아이디를 만들어보겠음

중복체크를 누르면 사용할 수 있는 아이디라고 뜸(db에 없으니깐)

만약 있는 아이디면? (이미 있는 gildong으로 해보겠다)

귀찮으니 비밀번호는 000000으로 하면 아래 빨간 글씨로 바른 형태를 알려줌(이건 강의에도 없는거임 뿌듯...)

 

비밀번호는 lstoast!12로 하고 비밀번호 확인을 입력했는데 어라? 불일치라고 뜬다. 다시 입력하자

바르게 입력하니 빨간글씨가 사라졌다. 이제 모든 내용을 입력하고 등록을 해보자.

아니 이메일 형식도 본다니 물론 이것도 강의에는 없는 내용이다.

올바르게 고치고 등록을 하니 회원가입에 성공했다.

2.내 정보 수정

30살이 되어버린 방장님은 ts가 되어 성별이 여자로 바뀌고 말았다. 비밀번호도 !12lstoast로 순서가 바뀌었다.

마녀의 저주가 통했다. 여자가 되어버린 방장님이었다.

3.그인

바뀐 비밀번호로 다시 로그인 해보았다.

혼날꺼 같아서 다시 바꿔 놓았다.


4.게시글 작성/수정/삭제/검색/조회

5.게시판에 글 10개 이상되면 하단에 1,2,3,4버튼을 통해 다음 페이지로 넘어가기

6.댓글 작성/수정/삭제 

게시판에 들어와 봤다. 정상이 아닌 글들이 보인다.

 

XSS방어? 저번 스터디 내용을 응용하다니 대단하다!!(안타깝게도 강의에 있는 내용임)

끌어오르는 기특함에 방장님이 댓글을 달아주기로 결심하심

다른 글들도 들어가 보기로 했다. 하라는건 안하고 다른 대회에 정신이 팔렸나 보다. 쌍욕을 써주셨다

하지만 마음착한 방장님 댓글 수정을 클릭해 수정해 주셨다. 하지만 이것도 말이 강한 것 같다.

 

결국 댓글을 지우는 걸로 마음먹은 방장님 삭제 버튼을 누르니

삭제된 댓글이라고 나온다. 하지만 db에는 나쁜 말이 고스란히 남아있다...

그래도 글을 쓰고 떠나기로 했다. 칭찬으로 마무리 해주자.

아니다. 생각이 바뀌었다. 너무 괘씸하다.

너무 심한것 같아서 삭제하기로 했다.

삭제된 글입니다. 라고 뜬다 하지만 db에는 남아있다.

분이 풀리지 않아 도배로 혼내주기로 했다. 10개가 넘어가니 밑에 번호가 하나더 생겼다.

아까 컴공을 무시하는 글을 본 것 같다. 찾아보자. 검색창에 컴공이라고 입력해보자

정상이 아닌 제목!! 글 내용이 너무 궁금하다.

흠... 넘어가도록 하자.

7.자유게시판 (회원가입해야 글 쓰기 가능, 비회원은 게시글 조회 및 검색만 가능) 

몰래 찾아온 손님. 회원가입하기 부끄러워 바로 게시판으로 들어왔다. 아니 이삭님이 도배를 해놓았다...

자신도 도배를 하기 위해 글쓰기를 눌렀더니 로그인이 되어있지 않다며 튕겼다.

그래도 이삭님 글이 궁금해 들어가 봤다. 별 내용 없었다.

8.포인트 랭킹(순위, 닉네임 표시)

그렇게 도배를 했는데도 랭킹에 오르지 못했다. 다른 방법이 있나보다.(흑흑 정말 열심히 만들었는데)

9. 최종 과제 제출시 개인서버에 올려서 타인이 접속 가능하게 해야함.

http://3.23.252.227:8080/UserChat/index.jsp

ㅎㅎ 연결이 안되서 그런지 아무것도 할 수가 없다. ㅎㅎ 원인은 아직도 모르겠다.

현재 시각 오전 5시 42분 오늘도 여러가지 일들(병원 가야함)이 있어서 원인을 밝히는데 오랜 시간을 쓸 수 없을 것 같다. 오후 11시 50분까지 해결하지 못하면 그냥 이 글이 올라갈 것 같다...

죄송합니다. 

 

추가

현재시각 11시 40분 결국 추정했던 mysql 외부접속 권한 문제를 해결하지 못했다...

https://zetawiki.com/wiki/MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9

 

MySQL 원격 접속 허용 - 제타위키

다음 문자열 포함...

zetawiki.com

https://dogcowking.tistory.com/154

 

MySQL 원격 접속 / ERROR 1410 (42000): You are not allowed to create a user with GRANT

* 개요 MySQL 은 기본저긍로 local에서만 접속 하도록 설정되어 있음. - 외부에서 접속하려면 해당 IP 원격접속 허용해줘야 함. - 만약 안되어 있다면 다음 오류 발생 ERROR 1045 (28000): Access denied for user.

dogcowking.tistory.com

https://blog.naver.com/PostView.nhn?blogId=anysecure3&logNo=221603118622&parentCategoryNo=&categoryNo=20&viewDate=&isShowPopularPosts=true&from=search

 

[리눅스/CentOS] MySQL 외부 접속 하기

안녕하세요. 닷홈입니다.​이번 글에서는 MySQL 외부 접속이 가능하도록 설정해 보도록 하겠습니다.​...

blog.naver.com

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      - 이런형식을 보여야 하는데 위에 자료들을 보면 

vi를 이용해 /etc/mysql/my.cnf에서 bind-address를 수정하라고 나온다.

근데 내꺼에서는 bind-address는 찾아볼 수 도 없었다. 으아악!!!

이유를 모르겠음... 뭐가 문제지 정말??

+ Recent posts