본문 바로가기

분류 전체보기

(75)
웹해킹 6주차 데이터베이스 관리 시스템웹 서비스는 데이터베이스에 정보를 저장하고, 이를 관리하기 위해 DataBase Management System (DBMS)을 사용합니다. DBMS는 데이터베이스에 새로운 정보를 기록하거나, 기록된 내용을 수정, 삭제하는 역할을 합니다. Relational DBMSRelational DataBase Management System (RDBMS, 관계형 RDBMS)는 1970년에 Codds가 12가지 규을 정의하여 생성한 데이터베이스 모델입니다. RDBMS는 행 (Row)과 열 (Column)의 집합으로 구성된 테이블의 묶음 형식으로 데이터를 관리하고, 테이블 형식의 데이터를 조작할 수 있는 관계 연산자를 제공합니다. DBMS에서 관계 연산자는 Structured Query Lang..
웹 5주차 MySQL9CRUD가  MySQL에서도 중요한데, C(create)와  R(read)가 가장 중요하다. MySQL10행을 넣고 싶을 땐 INSERT INTO TOPIC을 한 뒤 각  열에 맞춰서 VALUES에 넣고 싶은 값을 넣는다. MySQL11SELECT 와 FROM topic; 사이에 보고 싶은 값을 입력하면 그 부분만 테이블로 띄울 수 있다.WHERE를 사용하여 보고 싶은 요소만 보는 것이 가능하다. ORDER BY 방식을 사용하여 정렬 방식을 정할 수 있다. 사진에서는 id의 값을 기준으로 내림차순 정렬한다. LIMIT n의 방식으로 개수에 제한을 걸 수 있다. MySQL12UPDATE의 방식으로 바꾸고 싶은 요소를 바꿀 수 있다. WHERE을 꼭 넣어야한다.MySQL13DELETE 명령어로 지..
4주차 웹 MySQL1데이터를 쉽게 정리하고자 만들어진 소스를 데이터 베이스라고 부른다. 환경 데이터베이스로 편안하게 정리 가능하다. MySQL은 폭발적인 성장을 했다. MySQL2스프레드시트는 클릭으로 제어해야하지만 데이터베이스는 코딩으로 대화가 가능하다. MySQL3설치를 완료한다.MySQL4표들을 grouping한 게 데이터베이스다. 이것들을 스키마라고 하며, 스키마들이 합쳐진게 데이터베이스 서버다.MySQL5보안이 보다 용이하다. root의 권한으로 작업하는 것은 위험하다. MySQL6명령어들 CREATE DATABASE  파일명;DROP DATABASE 파일명;SHOW DATABASES;USE 파일명;MySQL7SQL은 공통적으로 사용하기 때문에 알아두는 것이 용이하다.MySQL8이름 뒤에 자료형 타입, ..
5주차 C언어 #define _CRT_SECURE_NO_WARNINGS #include #include #include int main(void) { int n; scanf("%d", &n); int count = 0; for (int i = 1; i * (i - 1) / 2 1.문자 n을 입력받습니다.2.개수를 셀 count변수를 따로 만들어둡니다. 3.for문으로 바깥에는 시그마의 공식처럼 만들어둡니다. 4. 안에 있는 if문으로 자연수인지 확인한다. 맞다면 count를 추가한다.5.출력한다.#define _CRT_SECURE_NO_WARNINGS #include #include #include int main(void) { int N, M, J; int L = 1; int R..
5주차 웹해킹 Cross Site Request Forgery (CSRF)CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점입니다. 공격자는 임의 이용자의 권한으로 서비스 기능을 사용해 이득을 취할 수 있습니다. 예를 들어, 이용자의 계정으로 임의 금액을 송금해 금전적인 이득을 취하거나 비밀번호를 변경해 계정을 탈취하고, 관리자 계정을 공격해 공지사항 작성 등으로 혼란을 야기할 수 있습니다. 아래 코드는 송금 기능을 수행하는 엔드포인트 코드 예시로, CSRF 취약점이 존재합니다.# 이용자가 /sendmoney에 접속했을때 아래와 같은 송금 기능을 웹 서비스가 실행함.@app.route('/sendmoney')def sendmoney(name): # 송금을 받는 사람과 금액을 입력받..
웹 3주차 php23 바로 다시 페이지 화면으로 돌아오는걸 볼 수 있습니다. 양식은 제 현재 코드 상황에 맞춰 조금 바꿨습니다. php24성공적으로 바뀐 걸 볼 수 있습니다. php25~27.2(글 내용이 날아가서 이쪽부터 다시 작성하기에 파일이 전부 합쳐져있습니다...) 정상적으로 삭제가 되는 걸 확인할 수 있습니다. print부분과 같이 반복되는 것은 하나로 묶어버리고, 다른 함수들에서 필요 시 호출하는 방식을 사용합니다. 태그의 공격을 막기 위해 htmlspeical을 사용해줍니다.(꺽쇠를 유니코드로 변환, beebox에서 나옴)태그가 들어가지 않은 걸 확인할 수 있습니다. basename으로 보안을 높여줍니다.  php29 UI는 애플리케이션의 영역이고 API는 문법 태그의 영역이다. php30 php co..
웹해킹 4주차 Cross Site Scripting (XSS)XSS는 클라이언트 사이드 취약점 중 하나로, 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있습니다. 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있습니다. 취약점은 SOP 보안 정책이 등장하면서 서로 다른 오리진에서는 정보를 읽는 행위가 이전에 비해 힘들어졌습니다. 그러나 이를 우회하는 다양한 기술이 소개되면서 XSS 공격은 지속되고 있습니다. 다음 장에서 XSS가 발생할 수 있는 상황과 종류에 대해서 알아보겠습니다. XSS 발생 예시와 종류XSS 공격은 이용자가 삽입한 내용을 출력하는 기능에서 발생합니다. 이러한 기능의 예로는 로그인 시 출력되는 ..
4주차 C언어 #define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { int x; scanf("%d", &x); int n = 1; int position = 0; while (position + n 1,문제에서 말하는 x의 값을 입력받는다.2.while문을 통하여 현재 대각선의 위치가 어디인지 확인한다. 2-1.이때 대각선의 수를 찾는 방법은 1+2+3+4.... 를 하나하나 더해서 찾는 방식이다. 3,분자와 분모를 확인한다,3-1.이때 홀수 대각선인지 짝수 대각선인지에 따라 분모와 분자가 증가하는 방식이 달라진다. 4. 위 조건을 고려하여 분자와 분모를 확인 후 출력한다.  #define _CRT_SECURE_NO_WARNI..
3주차 C언어 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { unsigned long long s; scanf("%llu", &s); unsigned long long left = 1; unsigned long long right = s; unsigned long long n= 0; while (left 1.수를 입력받습니다.2.받을 수 있는 숫자가 매우 커질 수 있기에 unsigned long long을 사용해줍니다3.while문을 이용해서 n을 찾아줍니다.3-1.이때 이진탐색을 이용해서 숫자를 찾아줍니다.4.출력합니다. #define _CRT_SECURE_NO_WARNINGS #include #include int compar..
웹해킹 3주차 엔드포인트: /아래 코드는 인덱스 페이지를 구성하는 코드입니다. 해당 페이지에서는 세션을 통해 이용자를 식별합니다. 먼저 쿠키의 sessionid의 값을 통해 session_storage에서 해당 Session ID의 username을 조회합니다. index 페이지 코드@app.route('/') # / 페이지 라우팅 def index(): session_id = request.cookies.get('sessionid', None) # 쿠키에서 sessionid 조회 try: username = session_storage[session_id] # session_storage에서 해당 sessionid를 통해 username 조회 except KeyError: r..