| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 동적타이핑
- 백엔드
- 개인정보보호교육
- 곱셈 암호
- Writeup
- 마감임박
- 호이스팅
- package-lock.json
- 국가인적자원개발컨소시엄
- 가명정보처리
- 개인정보보호위원회
- 확장 유클리드 알고리즘
- 한국산업인력공단
- arrow function
- node.js
- 백엔드입문
- 한국정보보호산업협회
- 모듈러 연산
- 덧셈 암호
- 개인정보안전성
- 한국정보보호산업협회기자단
- 디오판투스 알고리즘
- package.json
- pwnable.tw
- 무료교육
- 포너블
- 유클리드_알고리즘
- function scope
- 개인정보보호
- 웹 프레임워크
- Today
- Total
짱짱해커가 되고 싶은 나
문제를 보면 solution key를 찾으라고 한다. 사진을 보면 자 뒤에 메모장에 key가 써 있다. Solution Key is H4%BF%N TH3_MlDD33_4TT4CK 라고 추정된다. %부분은 아예 안보이고 확실하지도 않다. 대충 해킹 뭐시기는 미들어택이다. 라고 하는 것 같기는 하다. foremost 툴을 사용해보자. foremost는 리눅스에서 데이터를 복구하기 위한 카빙 툴로 디스크 hex데이터에서 헤더를 찾아 lenght를 확인하고 개별 파일을 복구한다. 따라서 이 툴을 이용해 메모장과 자가 있는 파일 2개를 개별로 복구할 수 있을 것이다. 다음과 같이 툴로 파일을 복구해보면 결과 jpg에 8개의 사진이 나온다. 이렇게 개별 파일로 본 결과 Solution Key is H4CC3R_IN..
일반적으로 스마트폰의 시초는 1992년 IBM에서 제작한 사이먼(Simon)으로 본다. 사이먼은 달력, 주소록, 계산기, 이메일 기능 등을 보유하고 있었다. 2007년 iOS를 기반으로 한 아이폰, 2008년 안드로이드 운영체제를 가진 안드로이드 폰 등이 나오기 시작했다. 2019년 3분기 발표 자료를 참고하면 전 세계에서 안드로이드 운영체제를 탑재한 스마트폰이 약 85%, 아이폰이 11% 정도라고 한다. 안드로이드의 개발 언어로는 Java, Kotlin, C++이 있으며 툴로는 Eclipse나 안드로이드 스튜디오를 사용한다. 나는 안드로이드 스튜디오를 이용해서 각 언어로 앱을 하나씩 만들어보는게 이번 목표다. 안드로이드는 Google에서 2007년 안드로이사를 인수하면서 시작됐다. 2007년에 구글은 ..
디지털 포렌식: 정식 수색 기관, 연계보관성, 수학을 통한 검증, 검증된 툴의 사용, 반복가능성, 보고 그리고 가능하다면 전문가의 설명 등을 통해 디지털 증거와 관련하여 컴퓨터 공학과 수사 절차를 법적인 목적에 적용하는 것 - Ken, Zatryko 로카르드의 교환법칙(Locard's exchange principle)은 물리적 세계에서 범죄자가 범죄현장을 드나들 때 범죄자는 흔적을 남기고 나갈 때 무엇을 가지고 간다는 것이다. 이 법칙은 디지털에도 적용된다. ex)로그 파일, 레지스트리 키 디지털 포렌식 조사관은 전문가 증인 자격으로 법정에 스는데 이 때 전문가란 법적으로는 판사가 잘 알지 못하는 증거를 이해하거나 해석을 하는 데 있어 도움을 줄 수 있는 사람으로 비전문가와 달리 자신의 의견을 제시할 ..
Keygen 문제다. IDA로 코드를 확인해보자. 일단 Str1에 키를 입력받고 stricmp(Str1, Str2)를 하는 것을 확인 할 수 있다. strcmp는 많이 봤지만 stricmp는 처음 봐서 찾아봤더니 대소문자의 구분 없이 비교하는 함수라고 한다. 그러면 우리는 Str2에 있는 값이 key니까 이 값을 찾으면 된다. 어 그런데 Str1을 입력받고 나서 sprintf로 Str2에 값을 쓰는 것을 확인할 수 있다. Foramt 배열에 있는 값들을 잘라서 넣고 있는데 처음에 화면에 Format을 프린트하니까 우리는 Format배열을 알 수 있다. 따라서 Str1에는 Asm07REC 가 들어있다.
* NoSQL NoSQL은 고정된 테이블이 없다. 테이블 대신 컬렉션이라는 용어를 사용하기는 하지만 컬럼을 따로 정의하지 않는다. 예를 들어, MySQL은 users테이블에 name, age 등의 컬럼과 자료형, 옵션 등을 정의하지만 몽고디비는 그냥 users 컬렉션을 만드는게 끝이다. 그리고 users 컬렉션에는 어떤 데이터든 자유롭게 들어갈 수 있다. 즉, 규칙성이 존재하지 않는 것이다. 또한 SQL 수준의 트랜젝션이 없다. 따라서 데이터의 일관성 문제가 생길 수 있다. SQL noSQL m규칙적인 데이터 입력 테이블 간 JOIN o 트랜젝션 o 안전성, 일관성 테이블, 로우, 칼럼 자유로운 데이터 입력 컬렉션 간 JOIN x 트랜젝션 x 확장성, 가용성 컬렉션, 다큐먼트, 필드 noSQL은 JOIN..
라우터를 만들고 app.js에 연결할 것이다. 라우터에는 GET, POST, PUT, DELETE 요청에 해당하는 라우터를 만들것이다 routes/index.js var express = require('express'); var User = require('../models').User; var router = express.Router(); /* GET home page. */ /*router.get('/', function(req, res, next) { User.findAll().then((users) => { res.render('seqeulize', {users}); }).catch((err) => { console.error(err); next(err); }); });*/ router.get..
DB는 앞에 sequelize를 설명할 때 사용했던 사용자(id, name, age, married, comment, created_at)와 댓글(id, commenter(외래키-user의 id), comment, created_at)을 사용할 것이다. 그 때 얘기한 것처럼 유저와 댓글 DB의 관계는 1:N 관계다. 폴더 구조는 express-generator에서 잡아주는 기본 폴더 구조 + sequelize를 통해 추가로 생긴 폴더(models, config, migrations, seeders)이다. view 폴더에서 어떤 식으로 DB의 내용을 보여줄지를 저장하고 public 폴더에서는 각 요청이 들어왔을 때 필요한 데이터들을 저장한다. 필요한 기능에는 댓글 로딩, 사용자 로딩, 댓글 등록, 사용자 ..
문제 분석 무슨 값을 입력하고 check를 누르면 wrong이 뜬다. readme 텍스트는 없지만 correct가 되는 어떤 값을 찾으면 될 것이다. GetDlgItemInt 함수가 입력받는 부분이다. 숫자를 입력받은 다음에 4084d0에 eax값, 즉 입력받은 값을 저장한다. 그리고 0x0040466f를 호출하고 404690으로 jmp, 401084로 jmp를 한다. 여기서 401084로 jmp하면 correct를 얻을 수 없으니까 이 부분을 해결하면 될 것 같다. 0x40466f를 보면 eax에 90(nop)을 넣고 retn 종료한다. 아닌가? ecx + 4084d005에 al을 더한다. 그리고 bh += al, eax += 601605c7, 4084d0++, 4084d0 ++을 한다. ?ㅜ 잘 모르..