분류 전체보기

자바스크립트 기초

자바스크립트(JavaScript) 프론트엔드에서 사용할 수 있는 유일한 프로그래밍 언어 백엔드에서도 사용할 수 있다. 모든 브라우저에 내장되어 있다. vanilla JS : 외부 라이브러리나 프레임워크를 쓰지 않는 순수 자바스크립트 three.js : 3D 구현 라이브러리 ml5.js : 머신러닝 모델 react native : android, ios app 브라우저 브라우저는 HTML을 열고, HTML은 CSS와 자바스크립트를 가져온다. - index.html - script.js - style.css Variable 기본적으로 const 사용하고, 필요한 경우에 따라 let 사용한다. const : constant(상수), 값을 업데이트 할 수 없다. let : 업데이트 가능 var : 과거 방식, ..

[BAEKJOON] 알고리즘 수업 - 병합 정렬 1(24060)

문제 https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 문제풀이 병합정렬 코드를 구현하고, 임시배열 리스트를 배열에 복사할 때마다 count 변수를 통해 저장 횟수를 센다. count와 K가 같을 때 저장되는 수를 출력하고, 마지막에 count 변수가 저장횟수 K 보다 작은지 확인하여 -1을 출력한다. #include #define NUM 500000 int sorted[NUM]; int num, ..

programming/c 2023.01.14

합병정렬(merge sort)

분할 정복(divide and conquer) 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략 - 분할(Divde) 입력 배열을 같은 크기의 2개의 부분 배열로 분할 - 정복(Conquer) 부분 배열을 정렬 - 결합(Combine) 정렬된 부분 배열들을 하나의 배열에 합병 #include int sorted[8]; void merge(int list[], int left, int mid, int right){ int i,j,k,l; i=left; //왼쪽 배열의 첫 인덱스 j=mid+1; //오른쪽 배열의 첫 인덱스 k=left; //임시 배열 인덱스 // 합병 while(i

programming/c 2023.01.14

error: variable-sized object may not be initialized

C90 표준이 적용된 C 컴파일러는 배열을 사용해 변수를 선언할 때 배열길이를 상수로 사용해야 한다. 아래와 같이 사용하면 오류가 발생한다. int n=8; int list[n]={21,10,12,20,25,13,15,22}; C99 표준 문법은 위 같은 표현이 가능하며, 이를 가변 길이 배열 (Variable-Length Array)이라 부른다. VLA 지원되지 않는다면, malloc 함수를 통해 동적 배열을 구현하면 된다.

programming/c 2023.01.14

[Webhacking.kr] old-56

문제 검색창에 내용의 문자를 검색하면 문자가 포함된 글의 목록을 보여준다. flag{ 를 검색하면 admin 목록이 뜬다. flag{로 시작하는 문자열을 검색하며 플래그 값을 찾으면 문제가 해결될 것 같다. 문제풀이 search 검색창 최대길이는 50이므로 50 길이만큼 문자를 검색했다. import requests cookie={'PHPSESSID':''} url="https://webhacking.kr/challenge/web-33/" # flag flag="flag{" data={'search':""} for i in range(50): for j in range(48,128): data['search']=flag+chr(j) res=requests.post(url, data=data) if (re..

[Webhacking.kr] old-55

문제 flag 값은 테이블의 세번째 컬럼에 위치하는 것을 알 수 있다. 문제풀이 score 누르면 아래 그림과 같이 아이디와 점수가 나온다. score를 조작하여 blind injection을 할 수 있다. procedure analyse()를 통해 세번째 컬럼을 확인한다. length를 통해 flag의 길이를 구하고, susbstr를 통해 문자를 구하려고 했는데, substr 이용하면 "no hack" 화면이 뜨며 필터링 되는 것을 확인할 수 있다. 검색을 통해 right&left 함수가 susbtr 함수와 동일하게 동작할 수 있는 것을 알게 되었다. 이를 바탕으로 코드는 아래와 같다. import requests import string cookie={"cookie":"'PHPSESSID'=''"} ..

[Webhacking.kr] old-54

문제 Password is ? ? 부분이 script문에 의해서 계속 변화한다. 문제풀이 id가 aview인 HTML에 text를 넣고 초마다 보여준다. aview.innerHTML=x.responseText; ? function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ return null; } } x=..