Study 185

[App]Fridalab 1

문제 MainActivity파일에서 challenge_01 클래스의 getChall01Int() 메소드를 호출하고 있으며 해당 변수 값이 1이 되어야 한다. js코드 setImmediate(function() { Java.perform(function() { var targetClass=decodeURIComponent( 'uk.rossmarks.fridalab.challenge%5f01' ); var methodName='getChall01Int'; var gclass=Java.use(targetClass); gclass[methodName].overload().implementation=function() { console.log('\nGDA[Hook getChall01Int ()'+''); var ..

Study/App 2022.10.20

[Docker]명령어

docker 생성 docker build -t : docker run -d -it -p : --name : docker 확인 docker images: 이미지 파일 목록 docker ps: 컨테이너 실행 목록 (-a 사용 시 전부 확인) docker 삭제 docker rmi : docker rm 컨테이너 접속 docker exec -it /bin/bash 빠져나올 땐 exit 지난 번에 도커를 포스팅 한 적이 있는데 이번에 다시 도커파일을 만들면서 새로 공부했기에 새로 포스팅을 했다. [Docker]Docker 입문 및 간단 명령어 Docker 설치 https://blog.dalso.org/linux/ubuntu-20-04-lts/13118 Docker 동작 docker hub(app store) ↓ p..

Study/Docker 2022.10.18

[python]assert 가정 설정문

assert 뒤의 조건이 True가 아니면 AssertError를 발생 지금까지 잘 움직이던 코드지만, 추가로 코드를 작성했을 때 예상하지 못한 다르동작을 하게 될 경우 assert문을 작성해둠으로써 빠르게 이를 방지할 수 있다. 사용 방법 assert [조건], [오류메시지] 조건이 True인 경우 어떠한 메시지도 출력하지 않고 진행되지만, 조건이 False인 경우 오류 메시지를 출력하며 AssertError를 발생한다. 오류메시지는 생략할 수 있다. 예제 a = 10 assert a == 10, 'a는 10이어야 한다.' print('a는 10이다.') assert a == 12, 'a는 12이어야 한다.' print('a는 12이다.') a의 변수에는 10 값이 지정이 되어있다. 첫 번째 asser..

Study/Python 2022.10.10

[Web]DNS rebinding

DNS rebinding 사용되는 도메인 이름 확인을 조작하는 방법 SOP(Same Origin Policy)를 우회하는 공격기법 악의적인 사이트의 도메인에 할당된 IP를 잠재적인 희생자가 사이트에 들어와 있는 동안 공격하고자 하는 사이트의 IP로 바꾸어 Same Origin Policy를 우회하는 방법 공격자의 DNS 서버에서 반환하는 IP 주소가 바뀔 수 있음에도 불구하고 브라우저가 same origin으로 판단하여 차단하지 않는 공격 브라우저가 그렇게 판단하는 이유는 scheme://domain:port 가 모두 동일하기 때문이다. SOP(Same Origin Policy) - 다른 출처 간 자원 접근 차단 정책 웹 보안 정책에서 Origin(출처)는 scheme, host, port 세 가지로 구..

Study/Web 2022.10.09

[App]레지스터 스택프레임

다시 리마인드겸 추가 포스팅ㅎㅎ [Reversing]스택프레임/프롤로그&에필로그 함수호출 1.함수가 사용할 파라미터를 스택에 넣고 함수 시작지점으로 점프(함수 호출)한다. 2.함수 내에서 사용할 스택프레임을 설정한다. (프롤로그) 3.함수의 내용을 수행한다. 4.수행을 마치 seomj74.tistory.com 스택 프레임 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역 변수 등이 저장 함수호출 1. 함수가 사용할 파라미터를 스택에 넣고 함수 시작지점으로 점프(함수 호출)한다. 2. 함수 내에서 사용할 스택프레임을 설정한다. (프롤로그) 3. 함수의 내용을 수행한다. 4. 수행을 마..

Study/App 2022.10.07

[App]레지스터 함수, 배열

함수 PRINT 함수 이처럼 PRINT 함수를 선언하고 실행시키면 해당 함수 내부로 들어가 msg 문자열을 출력시키게 된다. ADD 함수 eax와 ebx의 더하기 연산을 해주는 함수를 실행시켰고 1과 3을 더해 4가 출력되었다. MIN 함수 cmp를 통해 eax와 ebx의 값을 비교한 뒤 jl을 통해 eax가 더 작으면 LABEL_1으로 이동하게 된다. jl: jump if A less than B 해당 코드에서는 eax가 1, ebx가 3으로 해당 함수들을 거쳐 1이 출력된다. 배열 ecx를 14번째 줄에서 cmp로 5와 비교를 하여 15번째 줄에서 jne를 사용해 반복 실행 혹은 종료가 된다. 즉, 5번의 반복문을 실행한다고 생각하면 된다. [a]는 시작주소이고 ecx가 처음에 0, 1, 2, 3, ..

Study/App 2022.10.04

[App]Diva 12. Hardconding Issues - Part 2(하드코딩된 정보 + Frida native)

하드코딩된 정보 메인 페이지는 이러하다. hardcoded된 곳을 찾으라고 한다. jadx를 사용하여 해당 코드를 확인 18번째 줄에서 DivaJni라는 클래스를 실행한다. 해당 코드에서는 loadLibrary를 통해 "divajni"라는 so파일을 로딩한다. 이를 adb로 확인해보자. strings libdivajni.so로 확인해 봤다. 해당 값들을 하나씩 넣어봐도 해결할 수 있다. 해당 파일을 apk로 가져와 직접 확인을 해보자. memcmp를 사용해 비교하여 return을 해주고 있다. 따라서 해당 값을 입력해주면 된다. Frida native 이번엔 frida를 사용해 보자. memcmp를 사용하여 해당 값이 0인지에 대해 return 해주고 있다. memcmp() 함수는 두 개의 인자 값 사이..

Study/App 2022.09.30

[App]Uncrackable1 - 암호화 키 가져오기

https://seomj74.tistory.com/261 [App]Uncrackable1 루팅 탐지 Uncrackable1을 실행하면 다음과 같은 화면이 뜨며 앱이 종료된다. 반환 값 수정 jadx를 사용하여 MainActivity를 확인해보자. if문을 사용하는 것을 확인할 수 있다. c.a() 혹은 c.b() 혹은 c.c()의 값이 True.. seomj74.tistory.com 값을 입력하니 다음과 같은 경고창이 나온다. jadx를 사용하여 MainActivity를 확인해 보자. 45번째 줄 if문을 발견할 수 있다. a.a(obj)로 전달되며, 입력한 값이 obj에 지정이 되는 것을 확인할 수 있다. a를 확인해보자. a클래스의 a메서드이다. 12번째 줄을 보니 "8d127684cbc37c1761..

Study/App 2022.09.29

[App]Uncrackable1 루팅 탐지 - 반환 값, exit()

Uncrackable1을 실행하면 다음과 같은 화면이 뜨며 앱이 종료된다. 반환 값 수정 jadx를 사용하여 MainActivity를 확인해보자. if문을 사용하는 것을 확인할 수 있다. c.a() 혹은 c.b() 혹은 c.c()의 값이 True라면 "Root detected!"라는 구문이 출력되게 된다. c를 확인해보니 각 return 값들을 false로 설정해주는 방식으로 해결할 수 있다. 다음과 같이 코드를 작성하고 실행시킨다. console.log("Script loaded successfully") Java.perform(function x() { console.log("Inside java perform function"); var my_class = Java.use("sg.vantagepoi..

Study/App 2022.09.29

[App]Diva 1. Insecure Logging(디버그 로그 내 정보 노출) + 11. Access Control Issues - Part 3(화면 강제 실행 인증단계 우회)

diva 앱 사용 https://github.com/tjunxiang92/Android-Vulnerabilities/blob/master/diva-beta.apk 디버그 로그 내 정보 노출 신용카드 정보라고 이를 가정했을 때, logcat 명령어를 통해 앱에서 입력한 정보를 로깅되는 것을 확인할 수 있다. 코드에서 확인 Android Application Secure Design/Secure Coding Guidebook에 따르면 Logcat에 출력되지 않도록 권고한다. 민감정보는 Log.e가 아닌 Log.d를 이용해 출력하도록 권고한다. logcat 로그 정보는 같은 단말의 다른 응용 프로그램에서도 읽기가 허용되지 때문이라고 한다. 출처 https://siriusblack01.tistory.com/23..

Study/App 2022.09.27