웹 서버에 존재하는 명령어 실행 가능 함수 인자를 조작하여 특정 명령어 실행이 가능한 취약점
웹 어플리케이션에서 system(), exec()와 같은 시스템 명령어를 실행 시킬 수 있는 함수를 제공하며사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 운영체제 시스템 명령어를 호출하여백도어 설치나관리자 권한 탈취등 시스템 보안에 심각한 영향을 미칠 수 있는 취약점
*백도어: 정상적인 인증 절차를 거치지않고, 컴퓨터와의 암호 시스템 등에 접근할 수 있도록 하는 장치
설계자나 관리자에 의해 남겨진 시스템의 보안 허점을 말함, 일부로 남겨놓은 경우는 개발 단계에서의 테스트를 위해, 유지 보수 시의 효율성을 위해 특수 계정을 허용하는 것
대응방법:
1. 웹 서버의 권한을 관리자가 아닌 최소의 권한으로 설정 -> 명령실행의 결과를 최소화
2. php.ini의 safe_mode=On
3. java에서는 Runtime.exe를 사용해야한다면 파라미터 값에 대한 검정 절차가 필수
로그인 폼(Form)을 대상으로 공격 수행, 정상적인 계정 정보 없이 로그인을 우회하여 인증 획득 가능
SQL 쿼리문의 true/false의 논리적 연산 오류를 이용하여 로그인 인증 쿼리문이 무조건 true값이 나오게 하여 인증을 무력화 하는 원리
2. 데이터 노출 (DD : Data Disclisure)
DB에서 조작된 쿼리가 실행되여, 기업의 개인정보나 기밀정보에 접근하여 데이터 획득, 변경, 그리고 테이블 삭제 가능
3.원격명령 실행 (RCE : Remote Command Excute)
일부 데이터베이스 경우 확장 프로시저를 호출하여 원격으로 시스템 명령어를 수행할 수 있게함 -> 시스템 명령어를 실행할 수 있으면 해당 서버의 모든 자원에 접근하고 데이터 유출, 삭제 가능
SQL 인젝션이 가능한 조건(두 조건 모두 충족되어야함) -> 현재 대부분의 웹 어플리케이션은 모두 만족하고 있음
1. 웹 어플리케이션이 DB와 연동하고 있음
2. 외부 입력값이 DB 쿼리문으로 사용
공격 유형과 공격 기법
1. (일반적인) SQL Injection
1-1. 쿼리 조건 무력화 (where 구문 우회)
SQL에서는 Where 조건에 기술된 구문이 '참(true)'이 되는 범위만 쿼리 결과로 변환하는데 이 where 조건이 무조건 참이 되도록 쿼리를 조작하여 Where조건을 우회
방법
1. 주석을 의도적으로 삽입하여 where조건 무력화
2. 항상 참이 되도록 Boolean식을 구성하여 where조건 무력화
3. ; 으로 명령어를 연결하여 한 줄로 된 두개 이상의 명령어를 연속하여 기입 -> 테이블 삭제,수정 쿼리문 삽입
1-2. 고의적 에러 유발후 정보 획득
의도적으로 SQL 구문 에러를 유발하여 웹 애플리케이션이 내뱉은 오류 정보에 기반하여 유용한 정보를 알아 차리고 그 정보를 연속되는 또 다른 공격의 소재로 사용
1-3. 시스템 명령어 실행
2. Blind SQL Injection
쿼리 결과의 참/거짓으로부터 DB값을 유출해 내는 기법
2-1. Boolean-based Blind 공격
게시판 검색 기능을 참/거짓을 반환하는 요소로 사용하여 여기에 AND 조건으로 해커가 알고 싶은 쿼리 조건을 삽입해서 그 결과로부터 정보유출이 가능한 것이 Blind SQL 인젝션 공격 기법이며 이중에서도 AND 조건에 논리식을 대입하여 참/거짓 여부를 알아내는 방식을Boolean-based Blind 공격이라 함
2-2. Time-based Blind 공격
응답의 결과가 항상 동일하여 응답결과만으로는 참/거짓을 판별할 수 없는 경우 시간을 지연시키는 쿼리를 주입하여 응답 시간의 차이로 참/거짓 여부를 판별
XPath 쿼리문 구조를 임의로 변경하여 DB 정보 열람, 타 사용자 권한 획득이 가능한 취약점
데이터 베이스와 연동된 웹 어플리케이션에서 XPath 및 XQuery 질의문에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 입력이 가능한 폼(웹 브라우저 주소입력창 또는 로그인 폼등)에 조작된 질의문을 삽입하여 인증 우회를 통해 XML 문서로부터 인가되지 않은 데이터를 열람할 수 있는 취약점
좀더 쉽게 생각하면 XML을 DB라고 생각하고, XPath를 SQL이라고 생각하면 훨씬 간편함
XML 이란?
인터넷 웹 페이지를 만드는 HTML을 획기적으로 개선하여 만든 언어, 홈페이지 구축기능, 검색기능 등이 향상되었고, 웹 페이지의 추가와 작성이 편리해짐
웹 어플리케이션의 민감한 정보가 개발자의 부주의로 인해 노출되는 것으로 중요 정보(관리자 계정 및 테스트 계정 등)를 주석구문에 포함시켜 의도하지 않게 정보가 노출되는 취약점 또한 디폴트로 설정된 에러 페이지를 그대로 사용할 경우 시스템 내부 문제점을 자세하게 출력해주기 때문에 절대경로, 상태코드, 데이터베이스 종류, 질의문 등이 노출될 수 있으며 이밖에도 공격자가 검색엔진을 통하여 각종 개인 정보 및 서버 정보 등 해킹에 필요한 정보를 획득할 수 있음
파급효과: 개발 이력 노출, 테스트 및 관리자 계정 노출, 데이터베이스 정보 노출
대응 방안:
전체적인 통합 에러 페이지를 작성한 후 모든 에러코드에 대해 통합 에러 페이지로 리다이렉트 되도록 설정하여 공격자가 서버정보 및 에러코드를 수집할 수 없도록 설정해야 함
- 애플리케이션이 올바른 유효성 검사 또는 필터링 처리 없이 새 웹 페이지에 신뢰할 수 없는 데이터를 포함하거나, 자바스크립트와 HTML을 생성하는 브라우저 API를 활용한 사용자 제공 데이터로 기존 웹페이지를 업데이트할 때 발생합니다. XSS는 피해자의 브라우저에서 공격자에 의해 스크립트를 실행시켜 사용자 세션을 탈취할 수 있게 만들고, 웹 사이트를 변조시키고, 악성 사이트로 리다이렉션할 수 있도록 허용합니다.
XSS 공격 종류
- Stored XSS (저장형 XSS)
* 공격자가 취약한 웹서버에 악성 스크립트를 저장하면 희생자가 해당 자료를 요청할 떄 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식
- Reflected XSS (반사형 XSS)
* 외부에 있는 악성 스크립트가 희생자 액션에 의해 취약한 웹서버로 전달되고, 웹서버의 응답 페이지에 해당 악성 스크립트가 삽입되어 희생자 측에서 동작하는 방식
- DOM based XSS (DOM 기반 XSS)
* 희생자의 웹 브라우저에서 응답 페이지에 포함된 정상적인 스크립트가 동작하면서 DOM 객체를 실행할 때 URL 등에 포함된 악성 스크립트가 동작하는 방식이다. 응답 페이지에 관계없이 웹 브라우저에서 발생
저번에 정리했던 것처럼 기본적인 script 문자 필터링을 통해 다음과 같은 결과를 얻을 수 있었다.
replace("", " ").replace("<", "<").replace(">", ">").replace("\n", "<br>")와 같이 특정 문자를 필터링하는 형식이므로 아래의 링크에 나와있는 것처럼 문자 필터링을 우회하는 방법을 사용해 보았다.
'억지 기법(무차별 대입해 억지로 문제를 푸는)'이라 해석되며특정 암호를 풀기 위해 임의의 문자의 조합을 하나씩 대입해 보는 공격 기법으로암호를 사용하는 모든 곳에 행해질 수 있으며 그 대상으로는암호가 걸린 파일, SSH 접속, FTP 접속, 웹사이트 회원 로그인 등이 있다.
웹 어플리케이션에서 개인정보 수정 페이지나 통합 로그인(SSO)과 같은 곳에서 사용자 인증이 미흡(아이디로 인증)할 경우 공격자가 파라미터로 전달되는 값을 수정하여 사용자 도용 및 개인정보 노출 문제가 발생할 수 있는 취약점 또한 관리자 권한을 가지고 있는 페이지에 대해 접근 제한을 설정하지 않았을 경우 공격자가 해당 페이지로 접근하여 조작이 가능한 문제가 발생 할 수 있음
로그온 한 사용자 브라우저로 하여금 사용자의 세션 쿠키와 기타 인증 정보를 포함하는 위조된 HTTP 요청을 취약한 웹 어플리케이션에 전송하는 취약점
웹 어플리케이션에서 정상적인 경로를 통한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우 공격자가 스크립트 구문을 이용하여 정상적인 사용자로 하여금 조작된 요청을 전송 하도록 하여 게시판 설정 변경 및 자동 댓글, 회원 등급 변경 등의 문제가 발생할 수 있는 취약점
크로스 사이트 리퀘스트 변조의 경우 공격을 당한 사용자의 권한을 그대로 사용하게 되므로 사용자의 권한 수준에 따라 그 피해범위가 달라질 수 있음
파급효과:
사용자 권한 도용, 사용자 정보 변경
대응방안:
1. 로그인 성공 시 로그인 처리와 함께 토큰을 생성하여 세션에 저장
2. 웹 페이지 호출 시 URL을 통해서 토큰 전송
3. URL을 통해서 전송된 토큰과 세션에 저장된 토큰을 비교
크로스 사이트 리퀘스트 변조의 경우 웹 어플리케이션에 존재하는 모든 HTTP 요청 내에 예측할 수 없는 임의의 토큰을 추가하여 정상적인 요청과 비정상적인 요청을 판별하는 것을 권장하며 추가적으로 XSS 와 공격 방식이 유사하므로 “크로스 사이트 스크립트(XSS)” 대응방안을 참고하여 XSS 취약점을 제거하는 것을 권장함
웹 어플리케이션 운영 시 특정 프로세스에 대한 접근시도 횟수 제한을 설정하지 않을 경우 공격자가 자동화 툴 및 봇을 활용하여 일분에 수백 번의 접근을 시도 할 수 있으며 특정 프로세스를 반복 수행함으로써 자동으로 수많은 프로세스(DoS, 무차별 대입 기법 등)가 진행되어 시스템 성능에 영향을 미칠 수 있는 취약점
파급효과:
시스템 과부하, 웹 서비스 중지, 사용자 계정 탈취
대응방안
- 특정 시간 내 동일 프로세스가 반복 실행되지 않도록 시간제한을 설정해야 하며, 자동화 공격에 의한 시스템 과부하를 방지하기 위해 다량의 패킷이 유입될 경우 해당 접속을 차단하는 것을 권장함
- 캡챠를 사용할 경우 서버에 요청하는 사용자가 실제 사람인지, 컴퓨터 프로그램인지 구별 할 수 있기 때문에, 이를 회원 가입 및 로그인 등 프로세스에 적용 시 자동화 도구를 통한 공격을 방어할 수 있음
※ 캡챠란?
실제 사람인지, 컴퓨터 프로그램인지를 구별하기 위한 방법으로 사람이 쉽게 인식할 수 있는 임의의 문자와 숫자를 그림으로 변환하여 제시하고 제시된 문자는 왜곡되거나 덧칠되어 기계가 자동으로 읽기 어려운 상태로 만드는 것이 특징임
개요 파일 다운로드 기능이 존재하는 웹 어플리케이션에서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 파일에 대한 접근 권한이 설정되어 있지 않다면 공격자가 파라미터를 조작하여 환경설정 파일, 웹 소스코드 파일, 데이터베이스 연동 파일 등을 다운 받을 수 있는 취약점 경로추적의 경우 인증되지 않은 사용자가 시스템에 접근하여 중요한 파일을 읽거나 권한 없는 기능 등을 수행할 수 있는 취약점
보호되지 않는 쿠키를 사용하여 값 변조를 통한 사용자 위자 및 권한 상승 등이 가능한 취약점
웹 어플리케이션 운영 시 사용자 인증 방식 중 하나인 쿠키를 공격자가 변조하여 다른 사용자로 전환하거나 권한 상승이 가능한 취약점 클라이언트 측에 저장되는 쿠키는 그 특성상 변조 위험에 노출되어 있으나 활용 분야가 다양하고 구현이 쉽다는 이유로 인해 현재까지 많이 사용되고 있음
파급효과:
사용자 인증 우회, 권한 상승
대응방안:
쿠키에 중요정보가 포함 되어있으면 공격자가 사용자의 중요한 정보를 변조하거나 획득할 수 있는 위험이 있으므로 웹 어플리케이션 운영 시 가급적 쿠키 방식 대신 세션 방식을 사용하는 것을 권장하며 부득이하게 쿠키를 사용해야 할 경우 SEED, 3DES, AES 등 공인된 암호화 알고리즘을 사용하여 암호화를 적용시켜야 함
세션 방식은 접속자 별로 세션을 생성하여 사용자의 정보를 각각 지정할 수 있는 오브젝트로써, 페이지의 접근을 허가 또는 금지하거나 사용자 별 정보를 저장할 때 많이 사용함
따라서, 클라이언트의 자원을 사용하는 쿠키 보다 서버의 자원을 사용하므로 세션이 보안성 측면에서 우수하므로 웹 어플리케이션 개선·구축 시 세션 방식을 사용하길 권장함
웹 어플리케이션 상에 존재하는 모든 실행경로에 대해서 접근제어를 검사하지 않거나 미흡한 경우 공격자가 접근 가능한 실행경로를 통해 사용자의 정보를 유출 하거나 일시적인 권한 상승이 가능한 취약점
URL/파라미터 변조의 경우 불충분한 인증 및 인가 취약점과 유사하지만 프로세스 검증을 우회하는 것 이외에 사용자 입력 값에 대한 검증 누락이 발생하는 모든 상황을 포함하고 있으므로 SQL 인젝션, 불충분한 인증 및 인가, 크로스 사이트 스크립트(XSS) 공격에 활용될 수 있음
파급효과:
사용자 권한 획득, 인증 우회, 홈페이지 장악
대응방안:
웹 어플리케이션에서 제공하는 정보와 기능을 역할에 따라 배분함으로써 사용자가 변경할 수 있는 데이터의 노출을 최소화하는 것이 필요하며, 서버로 전송된 사용자 입력 값의 경우 세션 및 데이터베이스와 비교를 하여 데이터가 변조되었는지 검증할 수 있는 과정을 구현해야 함
흠 끝에 가서 날려먹어서 작성하는데 너무 힘들었다. 역시 저장을 생활화 하는 삶을 살아야겠다.
취약점 점검을 옳게 진행했다고 보기 어려울 것 같다. 뭔가 하면 할 수록 툴키디가 된 느낌이었다.
(완료 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 게시판 강의를 찍어놓았음
아무것도 모르는 바보인 나는 그냥 받아치면서 하나하나 공부했다. 여기서 6일 걸림(7/1~7/6). 물론 jsp 제작 환경 만들기(tomcat 설치, eclipse 설치, mysql 설치, mysql workbench 설치 등) + 다른 강의보는 것까지 포함한 기간이었다...
와 완성하고 겁나 뿌듯했음. 이 강의를 다 들으면 기본적인 게시판을 만들 수 있음. 과제로 따지면 1,2,5(일부분)이 가능해지는 거임. 이제 막 자신감이 생겨서 다른 걸 만들어 볼려는데 역시 난 감자임. 고수님들이 만들어논 거나 보면서 따라치자는 마음가짐으로 찾아보는데...? 커넥션풀? mvc model2? 뭐여... 이런거 안배움...
한가지 문제가 있었는데 나는 감자기 때문에 앞에 과정이 빠지면 뒤에껄 따라 갈 수가 없음. 그래서 처음부터 보기 시작했음. 근데 보다보니깐 채팅만 거의 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.포인트 랭킹(순위, 닉네임 표시)
그렇게 도배를 했는데도 랭킹에 오르지 못했다. 다른 방법이 있나보다.(흑흑 정말 열심히 만들었는데)