LOS 문제 1번 [GREMLIN] 풀이

Wargame/LOS(Lord of SQL) 2019. 10. 29. 16:20

SQL Injection Web Hacking GAME 문제 1 Gremlin 정규표현식을 배우기 전에는 멋모르고 query문에 주구장창 prob_gremlin만 입력한 덕분에 매번 위의 저 No Hack ~_~ 문구와 마주했었다. Injection은 공격자가 악의적으로 주입한 데이터를 웹 애플리케이션에서 DB의 정상적인 쿼리문 일부로 인식을 하고 실행하게 되는 것을 말하며, SQL 인젝션은 DB 언어인 SQL문을 사용한다. 위의 문제에서 주목해야 할 점은 아래에서 3번째 줄 코드인 if ( $result ['id'] ) solve ("gremlin"); 이다. 쿼리문이 실행되었을 때 id의 값이 존재하기만 하면 문제가 풀린다는 것을 알 수 있다. id의 값을 무조건 참이 되도록 쿼리묵을 작성해보자 .p..

Article Thumbnail
Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )

Knowledge 2019. 9. 25. 05:33

IT 전공자라면 진로를 결정할 때에 가장 먼저 고려하는 사항이 바로 프론트엔드 / 백엔드로서의 방향성이 아닐까 싶다. 불과 10여년 전만 해도 이러한 프론트엔드와 백엔드의 구분은 명확하지 않았고, 그럴 필요도 없었으나 이제는 웹의 발달과 더불어 앱 개발도 활발하게 이루어짐에 따라 세분화된 업무를 소수의 인원이 전부 담당하기는 사실상 불가능한 문제가 되었다. 결국, 프론트엔드와 백엔드 개념이 확립되면서 두 파트의 차이점이 확립되면서 많은 개발자 및 엔지니어들이 이를 참고하여 본인의 기술에 적합한 파트에서 업무를 수행하는 형태로 이어지고 있다. 그렇다면, 정확히 Front-End와 Back-End의 주 업무 분야와 기술력 등을 알아보고 두 파트의 차이점을 구분해보도록 하자. Front-End (프론트 엔드)..

Article Thumbnail
네이밍 컨벤션 ( Naming Convention )

Knowledge 2019. 9. 23. 05:28

C언어를 처음 막 배우기 시작할 때 학과 교수님께서 좋은 프로그래머가 되기 위한 조건 3가지라며 알려주셨던 것 중 하나가 바로 Naming Rules, 식별자 작성 규칙에 의거한 좋은 이름 짓기 였다. 그닥 어렵지 않게 느껴지지만 실상 코드를 짤 때 제일 어려운 게 naming 아닌가 싶다. ( 창의력 부족..) 본 포스팅에서 naming convention의 정확한 의미와 몇몇 대표적인 케이스에 대해 알아보자. 네이밍 컨벤션 ( Naming Convention ) Coding Convention 중 하나 소스 코드와 문서에 있는 변수 이름, 타입, 함수 등의 식별자에 사용되는 문자열을 선택하기 위한 여러가지 규칙 프로젝트, 프로그래밍 언어, 개발 도구 등에 따라 달라진다 코딩 컨벤션 ( Coding C..

Article Thumbnail
도커 ( Docker )

Knowledge 2019. 9. 11. 22:11

Docker 컨테이너 기반의 오픈소스 가상화 플랫폼 Linux 응용 프로그램들을 소프트웨어 컨테이너 안에 자동 배치시키는 오픈소스 프로젝트 2013년 3월 Pycon Conference에서 dotCloud 창업자 Solomon Hykes가 라는 세션을 발표하면서 알려졌다. Linux에서 운영 체제 수준 가상화의 추상화 및 자동화 계층 추가 제공 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리 단순화 기존의 가상화 및 반가상화 보다 경량화 된 방식 Docker의 주요 개념 Container(≒ Process) 가상화 기술 중 하나로, 리눅스 커널 레벨에서 제공되는 격리된 공간 안에서 프로세스가 동작하는 기술 기존 가상화 방식(예: Virtual Box..

Article Thumbnail
파일 시스템

Knowledge 2019. 9. 6. 23:02

디지털 포렌식에 관심이 있는 사람이라면, 파일 시스템에 관한 이야기를 들어본 적이 있을 것이다. 주로 파일 시스템을 토대로 포렌식 분석 등에 쓰이는 것으로 알고 있지만, 사실 컴퓨터를 공부하는 사람이라면 기본적으로 메모리와 함께 공부해야 할 부분이라고 볼 수 있다. 본 글에서는 파일 시스템이 정확히 무엇을 의미하는 것인지 그 정의와 목적을 알아본 후 운영체제 별 파일 시스템에는 어떠한 것이 있는지 알아보도록 한다. 파일 시스템 ( File System ) 컴퓨터에서 저장되는 모든 데이터를 하나의 객체(파일)로 취급하면서 사용자가 쉽게 사용할 수 있도록 관리하는 방식 사용자에게 하드디스크 동작을 추상화 시켜주는 도구 즉, 파일의 이름을 정하고 저장 및 검색을 위해 논리적으로 어디에 위치 시켜야 하는지에 대..

Article Thumbnail
Garbage Collection ( 쓰레기 수집 )

Knowledge 2019. 9. 6. 00:46

IT 전공자라면 모두 메모리 관리의 중요성에 대해 한 번쯤은 들어본 적이 있을 것이다. 각종 프로그래밍, 시스템 운용, 여러 프로세스 작업 관리 등 여러 부분에서 메모리를 효율적으로 쓰는 것은 IT 전문가가 되기 위해 기본적으로 갖추어야 될 소양이라고 생각한다. 본 글에서는 이러한 메모리 관리 기법 중 하나인 Garbage Collection에 대해 알아보고자 한다. Garbage Collection 동적 할당된 메모리 영역 가운데 더 이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는 기법 사용할 수 없게 된 영역이라 하면, 어떤 변수도 가리키지 않게 된 영역을 의미 주로 Heap 메모리에서 처리 및 사용 여부 식별하고 사용하지 않는 객체는 제거한다. 1959년 리스프의 문제를 해결하기 위해 존..

Article Thumbnail
JSON (JavaScript Object Notation)

Knowledge 2019. 9. 2. 01:11

이전 포스팅에서 언급한 바와 같이 XML은 헤더와 태그 등의 여러 요소로 가독성이 비교적 떨어지고, XML 특성상 메모리 용량을 많이 소비하는 단점이 있어왔다. 이에 따라 각광을 받게 된 것이 간결하고 통일된 양식을 쓰는 JSON이다. 이제부터 JSON에 대해 알아보도록 하자. JSON ( JavaScript Object Notation ) : 경량의 Data 교환 형식 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준 XML의 대안으로, 보다 쉽게 데이터를 교환 및 저장하기 위해 고안된 포맷 컴퓨터 프로그램의 변수 값을 표현하는 데 적합함 JSON의 가장 중요한 특징 JavaScript를 확장하여 만들었기에 JavaScript 객체 표기법을 따른다는 것과 언어 독립형 데이터 포맷이기 때문에 프로그래..

Article Thumbnail
XML (eXtensible Markup Language)

Knowledge 2019. 9. 1. 22:37

웹 페이지를 구축하는 데 쓰이는 웹 프로그래밍 언어에는 다양한 언어들이 있다. 누구나 한번쯤 들어봤을 법한 HTML 부터 PHP, JSP, XML 등 구조와 특징이 차별화 된 언어들이 즐비해 있다. 물론 위의 언어들을 모조리 다 마스터해야 하는 것은 아니지만 기본적인 개념은 알아둘 필요가 있다. 이번 포스팅에서는 XML에 대해 알아보도록 한다. XML ( eXtensible Markup Language ) : 확장 가능한 Markup 언어 ※ 여기서 Markup 언어란, 간단히 표현하자면 태그 등을 이용하여 데이터의 구조를 기술하는 언어 중 한 가지를 말한다. W3C에서 권장하는 여러 특수 목적의 마크업 언어를 만드는 용도의 언어 기존 HTML과 달리 웹상에서 구조화된 문서를 전송 가능하도록 설계되어 있..

Article Thumbnail
1216 컨설팅 회사

Wargame/CodeUp 2019. 9. 1. 01:05

문제 대영이는 SNS를 이용한 컨설팅 회사를 운영하고 있다. 이 회사에서 획기적인 기획안을 개발하여 사람들에게 홍보를 하려고 한다. 홍보를 할 경우 수입과 그렇지 않을 경우의 수입을 알고 있을 경우, 홍보를 하는 경우가 유리한가? 홍보를 하지 않은 경우가 유리한가? 그것도 아니면 홍보를 하든 안하든 별 관계가 없는가? 이것을 알아내는 프로그램을 만드시오. 입력 입력으로 세 정수가 입력된다. 첫번째 정수는 홍보를 하지 않을 경우 수입, 두번째 정수는 홍보를 할 경우의 수입, 세번째 정수는 홍보비용을 의미한다. 출력 홍보를 하는 경우가 유리하면 "advertise" 그렇지 않은 경우가 유리하면 "do not advertise" 그것도 아니면 홍보를 하든 안 하든 별 관계가 없으면 "does not matte..

Article Thumbnail
비밀키 / 공개키

Knowledge 2019. 8. 31. 23:31

암호 시스템의 설계에 있어서 가장 중요한 것은 알고리즘(Algorithm)과 키(Key)라고 할 수 있다. 알고리즘(Algorithm) 암호화/복호화에 적용된 수학적 원리 및 수행절차 암호화 알고리즘과 복호화 알고리즘으로 구분 알고리즘의 이해와 구현은 쉬워야 하나 공격에는 대신 강해야 한다. 키(Key) 암호화 혹은 복호화 능력을 얻기 위한 지식 동일한 알고리즘을 여러 사용자들이 고유하게 활용할 수 있게 해준다. 이러한 키 알고리즘은 크게 비밀키와 공개키 방식으로 구분할 수 있다. 비밀키(Private Key) 암호화 / 복호화를 위해 비밀 메시지를 교환하는 당사자만이 알고 있는 키 등장시기 : BC 500년경 키 대칭성 : 암호화 키 = 복호화키 ( 대칭키 ) 키 개수 : N*(N-1)/2 장점 계산속..

Article Thumbnail
하드웨어 / 미들웨어 / 소프트웨어

Knowledge 2019. 8. 30. 01:41

하드웨어 ( HardWare ) 본래 '쇠붙이'라는 뜻 컴퓨터를 구성하는 기계적, 전기적, 전자적(電子的) 기능을 대상으로 하는 장치 그 자체. ex) 중앙처리장치 / 기억장치(memory unit) / 입출력장치 하드웨어 분류 전자부품 컴퓨터에서 가장 중요한 중앙처리장치의 연산/제어회로 또는 기억장치/입출력장치의 제어, 판독, 쓰기회로 등에 사용 점차 회로의 집적화(IC)가 진척되어 크게 변혁하는 중 기계부품 대용량 기억장치/입출력장치에서 특히 중요한 부분 고(高)정밀도이자 강고(强固)한 것이 요구됨 미들웨어 ( MiddleWare ) 서로 다른 기종의 하드웨어나 프로토콜, 통신 환경 등을 연결하여 응용 프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어 운영 ..

Article Thumbnail
1356 사각형 출력하기 2

Wargame/CodeUp 2019. 8. 17. 19:53

코드 ※ 번외로, n의 값이 위의 문제처럼 입력 받는 것이 아니라 값이 지정된 수의 경우 Switch 문을 이용해서도 작성할 수 있다. ( 절대 필자가 문제를 잘못 읽고 저렇게 코드를 짜서 틀린게 아까워 쓰는 것이 아니다 ) 예를 들어, 값이 5로 주어졌을 경우 다음과 같이 코드를 만들 수 있다.

Article Thumbnail
1288 nCr (Tiny)

Wargame/CodeUp 2019. 8. 17. 19:02

코드 팩토리얼 연산이 반복되므로 팩토리얼을 구하는 함수를 만들어 필요할 때마다 호출하도록 한다. main에서는 함수에서 연산된 각각의 팩토리얼 값들로 남은 곱과 나누기 연산만 하면 되므로 코드가 비교적 간결해진다.

Article Thumbnail
1409 기억력 테스트 1

Wargame/CodeUp 2019. 8. 17. 17:33

문제 주현이는 5살이라서 아직 기억력이 좋지 않은 편이다. 주현이 엄마는 주현이의 기억력을 향상시키기 위해 매일 훈련을 시킨다. 어느 날, 주현이 엄마는 주현이에게 10개의 숫자를 차례대로 말한 다음 "k번째 숫자는 뭘까요?"하고 물어본다. 이번에는 주현이가 좋아하는 '또봇'이라는 로봇변신 자동차가 상품으로 걸려있다. 주현이가 '또봇'을 가질 수 있도록 프로그래밍하시오. 입력 첫째 줄에 숫자 10개가 차례대로 입력된다. 둘째 줄에 k값이 입력된다. 출력 k번째 숫자가 무엇이었는지 출력한다. 입력 예시 10 9 8 7 6 5 4 3 2 1 3 출력 예시 8 코드 : 코드업 사이트에서는 위의 코드를 오답처리했다. 알고 보니, 배열 값도 scanf 로 받는 ..

Article Thumbnail
소프트웨어 개발 방법론

Knowledge 2019. 8. 15. 20:27

소프트웨어 개발 방법론 소프트웨어 개발에 필요한 반복적인 과정(절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리한 것 수 많은 소프트웨어 실제 개발 과정을 정리하여 체계적인 분석을 통해 각각의 상황에 맞는 개발 방법을 정의한 이론 소프트웨어를 생산하는 데 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여 프로그래머들이 프로그래밍 개발과정에서 각 개인이 개발과정에서의 일관성을 유지하고 프로그래머들 간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론 소프트웨어 방법론 구성 요소 1. 구조적 방법론 1970년대 절차 지향 소프트웨어 개발 방법론 제한된 구조에서 코드 생성 및 순차적 실행 프로세스 단위로 문제 해결 : 알고리즘 단위 구조( 순차, 선택, 반복 )로 코드 표현 과정 설명 1) 요구..

Article Thumbnail