2021/04 8

SW 개발보안 경진대회(소개딩) 2020 참가 후기

작년 여름에 소프트웨어 개발보안 경진대회(소개딩)에 참여해서 최우수상을 수상했다. 첫 해커톤이고 경험도 없던 때라 지원 때부터 기대도 안 하고 나가본 대회였는데, 우당탕탕 결과물도 올려보고 생각지도 못한 상까지 받아 서 정말 뜻깊은 경험이었다. 지원할 때 '보안 약점이 제거된 소프트웨어를 만드는 대회'라는 것 외에 아무런 정보가 없어서 시작하기 어려웠었는데 어떻게 준비하고 수상했는지 참가기를 기록해보려고 한다. 1. 예선 지원서 작성 사이버보안전공이지만 막 2학년 1학기를 마쳤던 우리 팀은 아무도 웹/서버 개발을 해본 적도 없던 상태였다. 전공 수업에서 보안개론을 배우긴 했지만 서비스 개발이나 보안에 대해서 아는 게 많이 없었어서 지원서를 쓰는 동시에 공부를 많이 했다. 참가할 때부터 수상이 아니라 본선..

일상 2021.04.25

[Forensics] DFC 2019 AF100 풀이

1. 문제 2. 번역 당신은 산업 기밀 누설 사건의 심사관입니다. 검사를 하는 동안 의심스러운 보관 파일을 발견했습니다. 이 ZIP 파일은 다른 용의자에게 보낸 전자 메일에 첨부되었으며 다른 기밀 파일이 배포된 당시 작성되었습니다. 따라서 아직 맥락에서 확인되지 않은 정보가 포함되어 있다고 추정됩니다. 주어진 ZIP 파일에서 이 사건과 관련된 단서를 찾으십시오. Teams must : - 결론을 이끌어 내기 위해 사용된 도구를 모두 지정하십시오. - zip 파일의 구조, 찾은 내용 및 단계별 처리 방법 (압축된 비밀 JPEG 파일의 해시 값 포함)을 설명하십시오. 3. 나의 풀이 0) 문제 파일 준비, 010 editor 도구 설치 다운로드 링크: www.sweetscape.com/download/010..

보안 2021.04.19

NP-hard 란? Linear Classification의 NP-hard 문제

머신러닝 이론 공부 중, Linear Classification의 문제점으로 NP-hard 문제가 나왔는데 뭔지 짚고 넘어가고자 포스팅한다. 사전 지식 결정성(deterministic) 알고리즘 VS 비결정성 알고리즘 1) 결정성 알고리즘 : input에 따라 결과가 정해져있는 알고리즘. 즉, A -> B로 결정되어 있는 알고리즘이다. 2) 비결정성 알고리즘 : 답이 유일하게 결정되지 않는 알고리즘이다. A -> B,C,D 인지 정해지지 않음. NP의 반대 개념, P (polynomial) NP전에 우선 P를 알아야 한다. P는 결정론적 (deterministic) 알고리즘을 사용해서 다항 시간 내에 답을 구할 수 있는 문제의 집합이다. 즉, P는 yes/no 로 답할 수 있는 문제이다. ​​ # NP ..

기술 2021.04.19

SQL DATE 타입 insert 하기

방법 1. 일/월/년 순으로 입력 > INSERT INTO {테이블명} values ('김윤서', '05/03/2000') 방법 2. 년-월-일 순으로 입력 > INSERT INTO {테이블명} values ('김윤서', '2000-05-03') 명시되지 않은 시간 분/초는 default값이 12:00:00으로 입력됨. 원하는 포맷으로 저장하고 싶을 경우 방법 3. > ALTER session set NLS_DATE_FORMAT = 'DD/MM/RR HH:MI:SS'; DATE 의 format (NLS_DATE_FORMAT)을 변경시킨 후 > INSERT INTO {테이블명} values ('김윤서', '2000/03/05 12:10:17'); 입력. 방법 4. > INSERT INTO {테이블명} va..

기술 2021.04.16

Nodejs TypeError: Cannot read property undefined 해결 방법

오류 상황 template.js 파일에서 html 코드를 return 하는 함수 templateHTML()를 exports 하고, main.js 파일에서 require(./template.js)를 통해 받아서 templateHTML() 함수를 사용하려고 하는데 아래와 같은 에러가 발생했다. TypeError: Cannot read property 'templateHTML' of undefined 아래 방법들을 통해 해결했다. 방법 1. module.exports = HTML 를 소스 코드 가장 아래로 내리기 HTML 정의 후에 export 하도록 해주는 것이다. 방법 2. main.js 에서 불러오는 코드를 아래처럼 변경한다. var HTML = require('./template.js'); // 새로운..

기술 2021.04.07

Nodejs `JavaScript heap out of memory` 오류 시 해결방법

nodejs 웹페이지를 구현할 때 콘솔창에 node main.js 를, (main.js는 내가 만든 js파일 이름) 검색엔진에 localhost:3000 을 입력해서 페이지로 이동한다 (3000 은 내가 지정한 포트번호) ​ 그런데 아래와 같이 콘솔창에 에러 메시지가 뜨면서 웹이 안뜬다면 JavaScript heap out of memory 오류가 발생한 것이다. 이 오류는 과도한 메모리 점유로 인하여 js 엔진이 폭발한 것인데, 이럴 때는 더 큰 메모리를 할당해주면 된다. 1. JavaScript heap out of memory Nodejs의 기본 메모리 사이즈를 512MB 초과하면 자동으로 앱이 종료된다. 기본 메모리 사이즈를 늘리는 방법에 대해서 알아보자. 커맨드라인 환경에서는 node --max..

기술 2021.04.07

[Forensics] SHA-1 충돌 현상과 해시함수 개념 정리

암호화한 해시함수의 조건 A ≠ B 이면 h(A) ≠ h(B) 즉, 동일한 파일이라면 해시가 모두 같아야 하고, 다른 파일이라면 해시가 모두 달라야 한다. '충돌'이란? A ≠ B 인데 h(A) = h(B) 인 사례가 발견되는 경우를 말한다. 안전하다고 여겨지던 SHA-1 함수의 충돌 현상을 2017년에 구글에서 찾아냈고 , 이를 SHAttered 에 공개, 그리고 크롬과 여러 사이트에서 SHA-1의 지원을 중단하였다. 이와 관련하여, DFC 2020 (Digital Forensics Challenge) 에서는 SHA-1이 안전하지 않음을 깨닫게 하기 위한 문제로서 101번 "Same or Different?" 문제를 출제하였다. 해당 문제에 대한 풀이는 여기에서 볼 수 있다. SHA-1 충돌 사례 위에..

보안 2021.04.05

[Forensics] DFC 2020 101번 문제 풀이

# 문제 # 문제 해석 (checker.pyc 파일에 담긴 내용) : SHA1로 해싱했을 때는 같은 값이, SHA2로 해싱했을 땐 다른 값이 나오는 두 값을 찾아, 이 두 파일의 각 SHA3-256 값을 구해 XOR 연산하여라. # 풀이 방법 1. checker.pyc 파일을 다운받아, 리버싱하여 .py 형태의 소스코드로 만든다. *이 때 내가 받은 파일이 올바른지 확인하기 위해 CyberChef 사이트에서 SHA256으로 해싱하여 문제에 명시된 값과 같은지 비교해보았다 * .pyc 파일을 리버싱할 때는 Uncompyle2 라는 도구를 사용했다. 2. 리버싱하여 얻은 소스코드를 해석해보면, SHA-1 해시는 같으면서 SHA-2 등의 다른 해시 값은 다른 파일을 찾으라는 내용임을 알 수 있다. 이 값은 S..

보안 2021.04.05