전체 381

ChatGPT 활용법

최근 ChatGPT가 화제되면서 많이 이용되는 추세다.ChatGPT는 단순히 자료 수집과 정리에만 능한 게 아니라 다양한 용도로 사용될 수 있다. ChatGPT 커뮤니티 ChatGPT를 가지고 잠깐 놀아보자. 1. 자료수집2. 요약3. 작문4. 번역5. 오타수정 & 편집6. 분류7. 분석8. 아이디어 얻기9. 코딩  1. 자료 수집ChatGPT은 검색 엔진을 대체하기에 유용하다. 구글링을 하면 원하는 결과를 얻기 힘든 경우도 있는데, 내가 검색하고자 하는 문장에 대한 명확한 답을 얻을 수 있다는 점이 ChatGPT의 장점이다. ~에 대해 설명해줘라고 부탁하면 간단하게 요점이 정리된 설명을 해준다."구글링 잘하는 법 3가지 알려줘"라고 부탁하면 자료 조사에 더해 3가지로 요약까지 해준다. 위 질문은 구글링..

IT 2023.03.10

[bWAPP(비박스)] SQL Injection (GET/Select)

비박스의 SQL Injection (GET/Search)와 비슷한 방법으로 풀어볼 것이다. [난이도 : low] 페이지 구조를 먼저 살펴보자. 메뉴에서 영화를 하나 고르고 Go 버튼을 누르면 해당 제목의 영화에 대한 정보를 보여주고 있다. (GET/Search)와 다르게 입력하는 부분이 없고 정보도 한 줄밖에 나오지 않는다. GET 메소드를 사용하고 있기 때문에 파라미터 값이 URL에 노출될 것이다. URL을 잘 살펴보자. movie=1, action=go 두 개의 파라미터가 들어간다. 페이지 동작 부분을 확인하자. movie의 값에 따라 영화가 출력되는 것을 확인할 수 있다. movie=3으로 바꾸면 3번째에 해당하는 영화가 출력된다. 따라서 우리가 변조할 파라미터는 movie 값이다. SQL Inje..

Web Hacking/BWAPP 2023.03.08

[26회 해킹캠프 CTF Write-up] Web - 이 노래 제목이 뭐였더라..?

안녕하세요. 2023년 2월 11일 ~ 12일 사이에 진행된 동계 해킹캠프의 Web 문제 출제자입니다. 문제 화면입니다. 이 문제는 SQL Injection 문제입니다. 문제 description을 보시면 노래의 일련번호(serial_number)를 찾아달라고 합니다. 먼저 노래의 제목은 구글링하시면 알 수 있습니다. 이 노래의 제목은 Banana Shake 인데요, input에 노래 제목을 검색해보겠습니다. 제목을 검색하면 노래 제목과 가수, 노래 순서가 표로 출력됩니다. 일련번호는 DB에서 찾아내야 합니다. 여기서 힌트를 잠시 보겠습니다. 소스코드를 보시면 테이블 명이 나와있네요. 또 일련번호의 길이는 모두 같다고 합니다. input에는 다음과 같은 여러가지 필터링이 걸려있습니다. or, and, u..

[Python] WinError 10061 ConnectionRefusedError

파이썬에서 서버와 클라이언트를 구현하는 간단한 테스트를 공부 중인데 다음과 같은 오류가 떴다. ConnectionRefusedError: [WinError 10061] 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다 원인을 찾아보니 서버와 클라이언트를 실행할 때는 각각의 idle에서 실행해야 한다고 한다. 같은 idle에서 서버와 클라이언트를 실행할 경우 먼저 실행된 서버가 닫히기 때문이다. 이걸 모르고 한 idle에서 실행시켰더니 연결되지 않았다... idle 창을 두 개 열어서 서버와 클라이언트를 실행시키니 접속이 잘 되었다. [서버] import socket addr = ("0.0.0.0", 4444) with socket.socket() as s: s.bind(addr) s.listen()..

Python 2023.02.07

[BOJ/C++] 백준 1912 연속합

문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력 첫째 줄에 답을 출력한다. 예제 입력 1 10 10 -4 3 1 5 6 -35 12 21 -1 예제 출력 1 33 예제 입력 2 10 2 1 -4 3 4 -4 6 5 ..

BOJ(백준) 2022.11.20

[BOJ/C++] 백준 7576, 7569 토마토

#7576 토마토 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는..

BOJ(백준) 2022.10.09

[BOJ/C++] 백준 2178 미로탐색

문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력..

BOJ(백준) 2022.10.09

[BOJ/C++] 백준 1926 그림

문제 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다. 입력 첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다) 출력 첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림..

BOJ(백준) 2022.10.09

[BOJ/C++] 백준 1021 회전하는 큐

문제 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다. 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다. 큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그..

BOJ(백준) 2022.10.03

[BOJ/C++] 백준 1874 스택 수열

문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..

BOJ(백준) 2022.10.02