본문 바로가기

전체 글

(426)
Android Introduction Android #1 Architecture Android Platform Architecture Linux Kernel Native Library Android Runtime Java API Framework Android Runtime Android based on Android API which almost like Java Java application over JavaVM -> Android application Dalvik 안드로이드 대부분의 앱은 자바 기반으로 만들어진다. 자바를 빌드하면 .class 파일이 생성되며 이를 실행하기 위해서는 JavaVM이 필요하다. 하지만, 자바로 열심히 개발해봐야 디컴파일 하면 코드가 모두 보인다. 이를 방어하기 위해 난독화 등을 진행하지만 이는 절대적 방어 ..
FireWall/IDS & Network Monitoring FIREWALL/IDS & NETWORK MONITORING 침입차단시스템(F/W , Firewall) 방화벽(Firewall)은 외부의 악의적 공격자의 내부망 침입을 방어하기 위한 보안 장비 정보 보안의 가장 기본이 되는 시스템으로 접근통제(AC)를 통해 내부망에 일정 수준의 보안을 제공한다. 접근을 허용한 포트나 패킷에 대한 보안에 취약하다. 시스템 운영체제나 애플리케이션 레벨 취약점 문제에 대한 대응이 어렵다. 해당 취약점을 방어하기 위한 WAF 존재. 방화벽은 passive 장비로써, 사용자가 rule을 작성하여 이를 기반으로 사용한다. 방화벽은 트래픽의 헤더만 가지고 결정하기 때문에 트래픽 내용에 공격 관련 내용을 확인하지는 않는다. 해당 포트가 열려있는지 안열려있는지만 필터링한다. 침입차단시스..
Cloud Computing Cloud Computing 클라우드 컴퓨팅 필수 구성 요소 광대역 네트워크 대역폭(Broad Network Access) 네트워크를 통하여 다수 단말들에게 서비스를 제공하는 능력을 갖춰야 한다. 최근에는 PC외에도 테블릿, 모바일 등 다양한 단말이 존재하기 때문이다. 서비스 탄력성(Rapid Elasticity) 클라우드 컴퓨팅은 사용자의 서비스 요구사항에 맞춰 자원의 확장, 축소 기능을 제공해야 한다. 측정 가능한 서비스(Measured Service) 클라우드 시스템은 자동적으로 자원의 사용을 제어하고 최적화해야 한다. 모든 자원은 감시되고 제어 되어야 하며 사용자와 서비스 제공자 모두에게 정확한 내역이 제공되어야 한다. 사용자 요청 서비스(On-demand Self-service) 사용자는 서버시..
diff 32bit vs 64bit diff 32bit vs 64bit General BOF EBP-8에 할당되어 있는 변수를 오버플로우 한다고 가정하였을때, EBP에는 SFP가 존재하고, EBP+4에는 RET이 존재한다. 32bit system에서는 SFP가 4byte크기를 갖기 때문에 RET 변조를 위해서는 최소 스택 + 4 byte의 더미를 주고 RET에 접근한다. 하지만 64bit system의 경우에는 4byte 주소를 사용하던 32bit와는 달리 8byte 주소를 사용한다. 따라서, SFP가 8byte이므로 스택 + 8byte만큼의 더미를 주어야 한다. RTL and ROP 이에 대해 학습하기 이전에는 Calling Convention에 대한 이해가 필요하다. 콜링 컨벤션은 크게 3가지 존재하며 여기서 주목할 것은 cdecl 과..
CyberPlatform Security #1 CyberPlatForm Security 1. CyberPlatform_Basic_1 Platform Security 란 : 컴퓨터 보안 + 인터넷 보안 컴퓨터 보안 : 데이터를 보호하고 공격자를 방해하기 위해 설계된 도구들의 집합 인터넷 보안 : 정보 전송에 관여하는 보안 위반을 탐지, 차단 그리고 방어하는 기능들의 구성 Computer Security의 목표 Confidentiality(기밀성) : 인가된 사용자만이 데이터에 접근할 수 있다. Integrity(무결성) : 인가된 사용자만이 데이터를 수정할 수 있다. Availability(가용성) : 인가된 사용자만이 서비스를 사용할 수 있다. 추가 개념 Authenticity(인증) : 서비스에 대한 유효성이 신뢰성 있는 Source로부터 온 것인..
[Programmers] [Python] 실패율 실패율 ##2019 KAKAO BLIND RECRUITMENT 문제 설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 ..
[Programmers] [Python] 정수 내림차순으로 배치하기 정수 내림차순으로 배치하기 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 입출력 예 n return 118372 873211 제출코드 def solution(n): return int(''.join(sorted(str(n), reverse=True))) 전달받은 인자 n을 iterable한 객체인 str로 변환한 뒤 오름차순 정렬한 문자열로 만든 다음 int로 casting한다.
[Programmers] [Python] 비밀지도 비밀지도 2018 KAKAO BLIND RECRUITMENT 문제 설명 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 지도 1과 지도 2는 각각 정수 배열로 암호..