본문 바로가기

전체 글61

안드로이드 모의해킹) 취약한 인증 메커니즘 정상적인 인증 절차를 우회하여 잘못된 인증으로 접근 권한을 취약하는 취약점 액티비티 속성으로 로그인 인증 없이 권한 우회하는 실습 취약점 진단 true 설정일 경우 다른 액티비티에서 인증 없이 접근 가능 am start [앱이 설치된 주소]/[호출하고 싶은 패키지 주소] 명령어 입력 시 화면 전환 드로저로 우선 액티비티 리스트 확인, 권한 없음 확인 취약점 대응 방안 컴포넌트에 대한 접근은 외부에 허락하지 않는 것이 안전 false일 경우 : 액티비티는 같은 앱 혹은 같은 유저 ID를 가진 앱의 컴포넌트만 불러올 수 있음. true일 경우 : 별도의 인텐트 필터로 검증 인증 취약점은 진단 과정에서 살펴본 액티비티 취약점 이외의 앱에 인증을 우회할 수 있는 다양한 시나리오가 존재하기 때문에 소프트웨어 개발.. 2020. 7. 28.
안드로이드 모의해킹) 브로드캐스트 리시버 결함 브로드캐스트 리시버 안드로이드 시스템의 중요한 요소, 안드로이드 디바이스에서 이벤트 발생 시 브로드 캐스트 신호를 보내게 되는데 이 신호를 받아 처리하는 역할 수행 대상 애플리케이션에서 발생하는 브로드캐스트를 받기 위해서는 브로드캐스트 리시버가 설정되어 있어야 함 신호를 바든 경우 앱에 정의해 놓은 작업 수행 AndroidManifest.xml 에 선언 악의적인 목적을 갖고 사용자가 받는 알림을 중간에서 가로채는 행위를 할 수 있으며, 특정한 상황에서만 발생하는 작업을 우회하여 수행하도록 조작 취약점 진단 과정 androidManifest.xml에 선언된 리시버와 브로드캐스트 리시버를 상속받은 메서드 확인 MyBroadCastReceiver에 리시버 선언 : 브로드캐스트 신호 받으면 여기서 작업 수행 t.. 2020. 7. 28.
안드로이드 모의해킹 ) 취약점 진단 및 분석 도구 ADB : 안드로이드 에뮬레이터나 pC에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구 중 하나 명령 라인을 통해 사용자가 명령어를 입력하여 안드로이드 기기와 통신하도록 함 위치 : C:\Users\pushj\AppData\Local\Android\Sdk\platform-tools 클라이언트 안드로이드 개발 시스템에서 실행 서버 안드로이드 개발 시스템에서의 백그라운드 프로세스 데몬 에뮬레이터나 장치에서 백그라운드 프로세서로 동작하는 인스턴스 클라이언트 시작 시 가장 먼저 서버 프로세서가 실행중인지 점검 -> 서버 프로세스가 실행상태가 아니면 구동시킴(모든 클라이언트는 tcp 5037과 통신) 기기 연결 안 하고 켰을 때 나옴 / 맞는 화면인지 모르겠음 ADB 명령어 디바이스 장치 선택 장치 없.. 2020. 7. 28.
안드로이드 모의해킹 ) 환경 소개 안드로이드 필수 구성 요소 액티비티 : 사용자에게 보여주는 디바이스의 인터페이스 서비스 : 사용자들에 보여주지 않고 백그라운드에서 액티비티가 실행되는 것과 비슷한 프로세스로 동작 콘텐츠 프로바이더 : 각 애플리케이션 사이에서 데이터를 공유하기 위한 인터페이스 브로드캐스트 리시버 : 실시간으로 시스템의상태를 확인하여 이벤트가 발생했을 때 응답 가상 디바이스 AVD(Android Virtual Device) : 안드로이드 SDK에 포함된 안드로이드 가상 장치 제니모션 : 지니 모바일사 안드로이드 테스트 장 인시큐어뱅크 구동 순서 백엔드 서버 구동 : AndroLabServer 디렉터리에서 실행 C:\Android-InsecureBankv2-master\AndroLabServer> python app.py 서.. 2020. 7. 28.
안드로이드 모의해킹) 기본 실행법 앱 실행법 서버 오픈 후 preference 설정 후 로그인 로그인 안될 시 서버 오픈한 실행창에 컨트롤x 하면 끌까봐 놀라서 틀어줌 드로저 실행법 애뮬레이터 드로저 어플 오픈 후 2020. 7. 28.
프로그래머스 - 문자열 내 마음대로 정렬하기 https://programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 2 3 4 def solution(strings, n): answer = [] answer = sorted(strings,key=lambda string:string[n:]) return answer 이건 내 코든데 처음 두 문제는 성공했으면서 제출하기 누르니까 오답이라고 나온다 더이상 못 풀겠어서 쳐봤는데 1 2 3 def solution(strings, n): answer = [] answer = so.. 2020. 4. 17.
프로그래머스 - 가운데 글자 가져오기 https://programmers.co.kr/learn/courses/30/lessons/12903 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 2 3 4 5 6 7 8 def solution(s): answer = '' mid = len(s) if len(s) % 2 == 0: answer=s[mid//2-1:mid//2+1] else: answer=s[mid//2] return answer 왜 /는 안되고 //는 될까 뭔 차이지 / : 나눗셈의 결과가 float로 나타남 // : 나눗셈의 결과가 int로 나타남 그래서 /로 하면 틀린 답이라고 나옴 2020. 4. 16.
프로그래머스 - 같은 숫자는 싫어 https://programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나름 깔-끔 1 2 3 4 5 6 7 8 9 10 def solution(arr): answer = [] for i in arr: if len(answer)== 0: answer.append(i) if i == answer[-1]: continue else: answer.append(i) return answer 2020. 4. 16.
프로그래머스 - 문자열 다루기 기본 https://programmers.co.kr/learn/courses/30/lessons/12918# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 2 3 4 5 6 7 8 9 10 11 12 def solution(s): answer = True if len(s) == 4 or len(s) == 6: for i in range(len(s)): if s[i].isalpha() == True: answer = False break else : answer = False return answer 문제를 잘 봐야 풀 수 있는 문제,, 혹시나 검색해봤다면 .. 2020. 4. 8.
프로그래머스 - 2016년 https://programmers.co.kr/learn/courses/30/lessons/12901 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 2 3 4 5 6 7 import calendar def solution(a, b): answer = ["MON","TUE","WED","THU","FRI","SAT","SUN"] num = calendar.weekday(2016,a,b) print(answer[num]) return answer[num] 크 오졌다리 파이썬스럽게 풀었다 2020. 4. 4.